ユーザーがギャラリーから選択した画像をImageView
.
問題は、これらの画像が非常に大きくなる場合があることです。
元。、3648 X 2736
画像が 2048 X 2048 より大きいかどうかを確認した後、高さを変更してサイズを変更する方法がありますが、機能しません。(まだつぶれます):
呼び出し:
if(mPhoto.getHeight()>=2048||mPhoto.getWidth()>=2048){
image.setImageBitmap(scaleDownBitmap(mPhoto,200));
そしてメソッド自体:
public Bitmap scaleDownBitmap(Bitmap photo, int newHeight) {
final float densityMultiplier = getResources().getDisplayMetrics().density;
int h= (int) (newHeight*densityMultiplier);
int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));
photo=Bitmap.createScaledBitmap(photo, w, h, true);
return photo;
}
メソッドが実行されるとは思いません...画像がファイルからフェッチされるとすぐに、OutOfMemory
クラッシュが発生します。
私は何をすべきか?
画像を設定した行を . で囲ってもクラッシュしtry{}catch{}
ます。
画像はドローアブル フォルダーのリソースではありません。カメラ、ギャラリー、またはインターネットから来ます。
メモリの上限に近づいている可能性があることはわかっています。明らかなことには答えないでください。問題は、どうすれば解決できるかです。
一部の大きな画像は一部のデバイスで動作します (大量のメモリを搭載した新しいデバイス)
例の場合。同じイメージが Galaxy s4 で機能しますが、Galaxy s1 がクラッシュします。
私はこれに対する解決策を見つけることができませんでした...
どうもありがとうございました!