2016-05-21 18 views
1

Ich lade ein Bild aus URL mit Picasso-Bibliothek. Ich mag die wirkliche Bildgröße zu bekommen, aber ich kann nur die Bildgröße im Speicher erhalten:Picasso - wie bekommt man die richtige Bildgröße?

Picasso.with(this) 
    .load(imageUrl) 
    .error(R.drawable.no_image) 
    .into(photoView, new Callback() { 
     @Override 
     public void onSuccess() { 
      Bitmap bitmap = ((BitmapDrawable)photoView.getDrawable()).getBitmap(); 
      textImageDetail.setText(bitmap.getByteCount());// image size on memory, not actual size of the file 
     } 

     @Override 
     public void onError() { } 
    }); 

Wie man die Größe des geladenen Bildes bekommen? Ich denke, es ist irgendwo in einem Cache gespeichert, aber ich weiß nicht, wie man auf die Bilddatei zugreifen kann.

aktualisieren

Sorry für mein schlechtes Englisch, vielleicht fragte ich die falsche Frage. Ich brauche die Bildgröße (128 kb, 2 MB, etc.). NICHT die Bildauflösung (800x600, etc.)

+0

Folgen Sie dieser Antwort, ich denke, das wird für Ihr Problem funktionieren: http://StackOverflow.com/a/25524136/6316670 –

+0

Überprüfen Sie meine Bearbeitung, um zu sehen, wie Sie die tatsächliche Größe, nicht die Abmessungen erhalten. – AkashBhave

Antwort

1

Sie könnten zuerst das tatsächliche Bitmap Bild erhalten, das geladen wird, und dann finden Sie die Abmessungen davon. Dies muss in einer asynchronen Methode wie AsyncTask ausgeführt werden, da das Herunterladen des Bildes synchron ist. Hier ein Beispiel:

Bitmap downloadedImage = Picasso.with(this).load(imageUrl).get(); 
int width = downloadedImage.getWidth(); 
int height = downloadedImage.getHeight(); 

Wenn Sie die tatsächliche Bildgröße in Byte des Bitmap erhalten möchten, verwenden Sie einfach

// In bytes 
int bitmapSize = downloadedImage.getByteCount(); 
// In kilobytes 
double kbBitmapSize = downloadedImage.getByteCount()/1000; 

Ersetzen Sie die imageUrl mit dem, was URL Sie verwenden möchten. Ich hoffe es hilft!

+3

Danke für die Antwort, aber es löst nicht mein Problem. Dies in Speicher Bildgröße, nicht die tatsächliche Größe der Datei. Alle Bilder mit 1920x1080 px geben 8294400 Bytes zurück (weil (1920 px * 1080 px) * 4 Bytes pro Pixel = 8.294.400 Bytes). – Mikhail

Verwandte Themen