SORU
14 NİSAN 2010, ÇARŞAMBA


Kod çözme doğru boyutu ile Android bitmap

Ben deşifre SD kart BitmapFactory.decodeFile kullanarak bit eşlem. Bit uygulama ihtiyacı olan şey daha büyük veya yığın verir bazen BitmapFactory.Options.inSampleSize (küçük) subsampled bir bitmap istemek için kullanıyorum.

Sorun platform inSampleSize tam değer zorlamaz, ve ben bazen bir bitmap çok küçük veya kullanılabilir belleği için çok büyük hala.

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize:

Not: decoder yerine getirmek için çalışacağız bu istek, ama sonuç bitmap farklı boyutları olabilir tam olarak ne talep edilmiştir. Ayrıca, 2'nin katlarında sık sık daha hızlı/kod çözücü daha kolay onur.

Nasıl bir SD kartından bit eşlem tam boyutunu bir bit eşlem almak için deşifre olabildiğince az bellek tüketen çalışırken çözmeye ne gerek var ki?

Düzenleme:

Mevcut kaynak kodu:

BitmapFactory.Options bounds = new BitmapFactory.Options();
this.bounds.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, bounds);
if (bounds.outWidth == -1) { // TODO: Error }
int width = bounds.outWidth;
int height = bounds.outHeight;
boolean withinBounds = width <= maxWidth && height <= maxHeight;
if (!withinBounds) {
    int newWidth = calculateNewWidth(int width, int height);
    float sampleSizeF = (float) width / (float) newWidth;
    int sampleSize = Math.round(sampleSizeF);
    BitmapFactory.Options resample = new BitmapFactory.Options();
    resample.inSampleSize = sampleSize;
    bitmap = BitmapFactory.decodeFile(filePath, resample);
}

CEVAP
29 Temmuz 2010, PERŞEMBE


Doğru yolda, ancak aynı anda iki şey yapmak için çalışıyoruz ve uygun boyuta ölçekle dosyasını okuyun.

İlk adım için bir bit Eşlem dosyası gerektirir göre biraz daha büyük, BitmapFactory kullanarak okumaktır.Seçenekler.istediğin zaman aşırı bellek büyük bir bit eşlem okuma tüketmek değil emin olmak için inSampleSize küçük bir küçük resim ya da ekran çözünürlüğü görüntü.

İkinci adım Bitmap aramanız yeterli.() createScaledBitmap ihtiyacınız kesin çözüm için yeni bir bitmap oluşturmak için.

Onun bellek geri kazanmak için geçici bir bit eşlem sonra temiz olduğundan emin olun. (Değişken kapsam dışına gidip GC o uğraşsın izin verir, ya da ara .() geri dönüşüm görüntüler çok yükleniyor ve sıkı bellek üzerinde çalışan.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • megablueblaster

    megablueblas

    23 HAZİRAN 2006
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007