2016-06-09 9 views
0

Is there any way in Java to take image width and height without transfer or download?Wie erhalten Sie die Bildbreite und -höhe von der URL, ohne das vollständige Bild in Android herunterzuladen?

erwähnt einen Weg mit ImageIO, aber ImageIO ist nicht auf Android verfügbar.

Android verfügt über BitmapFactory, die das Bild dekodieren kann, um die Breite und Höhe zu erhalten, ohne das gesamte Bild in den Speicher zu laden, aber es funktioniert nur mit Dateien.

Also die Frage ist auf Android, gibt es eine Möglichkeit, nur die Bildbreite und -höhe von einer Web-URL zu erhalten, ohne das gesamte Bild herunterzuladen?

+0

überprüfen Sie diese Antwort: http://stackoverflow.com/questions/16440863/can-i-get-image-file-width-and-height-from-uri-in-android/16440953#16440953 –

+0

Ich fand Optionen. inJustDecodeBounds = true funktioniert nur für Dateien, wenn InputStream von einer URL stammt, ist es ineffektiv. – jiawen

Antwort

0

Es ist nicht möglich, ohne das Bild herunterzuladen. BitmapFactory kann erst angewendet werden, wenn das Bild heruntergeladen wurde.

+0

was ist, wenn ich sicher bin, dass das Bild in JPEG ist? die Breite und Höhe ist in der Kopfzeile der JPEG-Daten kodiert, richtig? kann ich nur den Header lesen? – jiawen

0

Es ist möglich, in Java, mit ImageReader.getHeight (int) und ImageReader.getWidth (int), die normalerweise nur liest das Bild-Header, so wird Bild nicht vollständig heruntergeladen haben, nicht sicher, dass es in Android arbeiten:

public static Dimension getImageDimensionFromUrl(final URL url) 
      throws IOException { 

     try (ImageInputStream in = ImageIO.createImageInputStream(url.openStream())) { 
      final Iterator<ImageReader> readers = ImageIO.getImageReaders(in); 
      if (readers.hasNext()) { 
       final ImageReader reader = readers.next(); 
       try { 
        reader.setInput(in); 
        return new Dimension(reader.getWidth(0), reader.getHeight(0)); 
       } finally { 
        reader.dispose(); 
       } 
      } 
     } 

     return null; 
    } 
Verwandte Themen