Ich habe Bitmaps, die Quadrate oder Rechtecke sind. Ich nehme die kürzeste Seite und mache so etwas:
int value = 0;
if (bitmap.getHeight() <= bitmap.getWidth()) {
value = bitmap.getHeight();
} else {
value = bitmap.getWidth();
}
Bitmap finalBitmap = null;
finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
Dann skaliere ich es auf eine 144 x 144 Bitmap, indem ich Folgendes verwende:
Bitmap lastBitmap = null;
lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
Das Problem ist, dass die obere linke Ecke der ursprünglichen Bitmap zugeschnitten wird. Hat jemand den Code, um die Mitte der Bitmap zuzuschneiden?
100x1000
Bild erhalten, erhalten Sie ein100x550
Bild zurück.Während die meisten der oben genannten Antworten eine Möglichkeit bieten, dies zu tun, gibt es bereits eine integrierte Möglichkeit, dies zu erreichen, und es handelt sich um eine Codezeile (
ThumbnailUtils.extractThumbnail()
)Wenn Sie möchten, dass das Bitmap-Objekt recycelt wird, können Sie Optionen übergeben, die dies ermöglichen:
Von: ThumbnailUtils-Dokumentation
Bei der Verwendung der akzeptierten Antwort kam es manchmal zu Speicherfehlern, und die Verwendung von ThumbnailUtils löste diese Probleme für mich. Außerdem ist dies viel sauberer und wiederverwendbarer.
quelle
Haben Sie darüber nachgedacht, dies von der zu tun
layout.xml
? Sie könnten für Ihr SetImageView
des Scaletype aufandroid:scaleType="centerCrop"
und legen Sie die Abmessungen des Bildes in demImageView
Innern derlayout.xml
.quelle
Sie können den folgenden Code verwenden, der Ihr Problem lösen kann.
Führen Sie die oben beschriebene Methode vor dem Zuschneiden nach dem Aufrufen des Bilds aus, damit Sie mit dem zugeschnittenen Bild das beste Ergebnis erzielen, ohne einen OOM-Fehler zu erhalten.
Weitere Informationen finden Sie in diesem Blog
quelle
Hier ein vollständigeres Snippet, das die Mitte einer [Bitmap] beliebiger Dimensionen ausschneidet und das Ergebnis auf die gewünschte [IMAGE_SIZE] skaliert . Sie erhalten also immer ein [croppedBitmap] skaliertes Quadrat der Bildmitte mit einer festen Größe. Ideal für Thumbnails und so.
Es ist eine vollständigere Kombination der anderen Lösungen.
quelle
Wahrscheinlich die bisher einfachste Lösung:
Importe:
quelle
So korrigieren Sie die @ willsteel-Lösung:
quelle
quelle
quelle