大きい画像をImageViewで表示しようとするとOutOfMemory起こすよ

カメラで撮った画像などをそのままImageViewで表示しようとすると、画像がサイズが大きすぎて、簡単にOutOfMemoryが発生してたので、file_pathを渡すと小さい画像のBitmapに変換するプログラムを書いて利用しています。

カメラで撮った画像をそのまま利用する事がないという想定です・・・。

たとえば、サーバーに画像を送信するときなど、どの画像を選択したのかサムネイル表示する際に利用していただければいいと思います。

サイズは適当です・・・。

package jp.sharakova.util;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class BitmapResize {

	public static Bitmap decodeLargeFile(String path) {
		BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;

		int scaleW = options.outWidth / 380 + 1;
		int scaleH = options.outHeight / 420 + 1;

		int scale = Math.max(scaleW, scaleH);

		options.inJustDecodeBounds = false;
		options.inSampleSize = scale;

		return BitmapFactory.decodeFile(path, options);
	}

}