1
我創建的小應用程序,從畫廊或相機的圖像作品。負荷前檢查Android的圖像大小的內存
這一切工作正常,但。 在小屏幕和小內存大小的設備(HTC Desire)上,我從其他手機下載了一些全尺寸的圖像,而且它們更大(該手機上的800萬像素攝像頭)。
如果我嘗試加載,對於我的小相機龐大的圖像,它會立即崩潰。
那麼,如何實現某種檢查,並縮減該圖像,但仍加載它是否正確?
我做大規模圖像它們被加載後回落,但這個東西出現崩潰之前應該做的。
Tnx。
InputStream in = null;
try {
in = getContentResolver().openInputStream(data.getData());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// get picture size.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, options);
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// resize the picture for memory.
int screenH = getResources().getDisplayMetrics().heightPixels; //800
int screenW = getResources().getDisplayMetrics().widthPixels; //480
int width = options.outWidth/screenW;
int height = options.outHeight/screenH;
Log.w("Screen Width", Integer.toString(width));
Log.w("Screen Height", Integer.toString(height));
int sampleSize = Math.max(width, height);
options.inSampleSize = sampleSize;
options.inJustDecodeBounds = false;
try {
in = getContentResolver().openInputStream(data.getData());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// convert to bitmap with declared size.
Globals.INSTANCE.imageBmp = BitmapFactory.decodeStream(in, null, options);
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我必須承認,我沒有得到你的答案。我將用代碼編輯我的問題。 – Balkyto
所以我嘗試將它安裝在任何屏幕上,閱讀屏幕大小和屏幕密度,但它仍然很大。我必須錯過關於比率/密度的事情。 – Balkyto
我認爲這是大的(800或480)。嘗試設置inSampleSize = 8 – Blackbelt