2010-10-20 12 views
8

Esistono almeno due metodi per ridimensionare una bitmap in Android, Uno è utilizzare "inScaled, inDensity, inTargetDensity" in "BitmapFactory.Options" quando si decodifica una sorgente bitmap. L'altro consiste nell'utilizzare una "matrice" in "Bitmap.createBitmap".differenza tra i metodi per ridimensionare una bitmap

Quello che sono curioso è qual è la differenza tra questi due metodi? E la qualità della bitmap prodotta? E l'utilizzo della memoria? ecc ...

risposta

0

Non c'è alcuna "grande" differenza. Sebbene, uno dei vantaggi dell'uso di BitmapFactory.Options è la possibilità di verificare la larghezza/altezza di Bitmap senza allocare memoria per i pixel effettivi di Bitmap.

Inoltre, si può facilmente vedere quale options BitmapFactory.Options ha e confrontare con Bitmap.createBitmap(). In generale, BitmapFactory.Options è come un'API "strumento" per semplificare la decodifica e il campionamento di Bitmap s.

1

Una differenza che ho trovato è che l'uso delle opzioni di BitmapFactory.inSampleSize per ridimensionare le bitmap non è così granulare, perché la scala sarà 1/inSampleSize, e poiché inSampleSize deve essere un numero intero, si finisce con il ridimensionamento come 1/2, 1/3, 1/4, ecc., Ma niente di più granulare di quello.

Bitmap.createScaledBitmap(), anche se richiede più memoria, consente uno scaling più granulare, risoluzione fino a 1dp.

+0

Hai dimenticato il metodo inScaled + inDensity + inTargetDensity che consente il ridimensionamento granulare. Devi solo conoscere le grandezze di ridimensionamento e lavorare con inSampleSize. – Gensoukyou1337

Problemi correlati