Die Erklärung von android.graphics.Bitmap.createScaledBitmap
ist
public static Bitmap createScaledBitmap
(Bitmap src, int dstWidth, int dstHeight, boolean filter)
In der Dokumentation werden jedoch keine der Parameter erläutert. Alle außer ihnen sind ziemlich offensichtlich boolean filter
. Weiß jemand was es tut?
Zur Erweiterung auf Karan Antwort: In der Regel werden Sie keinen Unterschied sehen , wenn Sie Ihr Bild sind die Skalierung nach unten , aber Sie werden , wenn Sie es sind die Skalierung nach oben .
Das Übergeben
filter = false
führt zu einem blockartigen, pixeligen Bild.Durch
filter = true
das Passieren erhalten Sie glattere Kanten.Wie EIYeante in den Kommentaren hervorhob, sehen Sie möglicherweise immer noch einen Unterschied. Dies ist ihr Beispielbild.
quelle
bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), intent.getData()); resizedBitmap = Bitmap.createScaledBitmap(bm, 150, 150, true); resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
mache ich eine starke Skalierung: Ich ändere nur den Filterparameter.Filter legt die FILTER_BITMAP_FLAG für das Malen fest, die sich auf die Abtastung von Bitmaps auswirkt, wenn diese basierend auf dem von Ihnen angegebenen Wert transformiert werden.
quelle
Ein bisschen spät zur Party, aber ich dachte, einige Beispielbilder könnten das Problem klären.
Die Android-API gibt nicht an, welche Art von Filter angewendet werden soll. Ich denke, die Frage ist: Möchten Sie, dass Ihre Pixel so bleiben, wie sie sind (wie Sie es in 8-Bit-Grafiken möchten), oder ist es in Ordnung, eine Transformation anzuwenden Machen Sie das Bild schmackhafter (wie Sie es auf Fotos wünschen würden).
Es gibt eine allgemeinere Frage, ob und wie nach Superuser gefiltert werden soll .
Jeff Atwood sagt:
quelle