[Android] OutOfMemory対処(画像サイズの変更)

Out of Memoryが連発したので対処のためやってみた。

色々試したけどサイズ変更が一番安定しました。
※今回はサーバから呼び出した画像を使用するのでマルチスレッドでの実装を前提としてます。

*****全体ソース*****

try {
        Bitmap get_image;
        URL url = new URL(【"ファイル参照先"】);
        // ファイルの読み込み
        InputStream is = url.openStream();
        
        BitmapFactory.Options options = new BitmapFactory.Options();
        // ステータス情報のみ読み込むようにする
        options.inJustDecodeBounds = true;
	
        // ステータス情報を取得(ここでは画像は読み込まない)
        BitmapFactory.decodeStream(is, null, options);
        is.close();

        // 変更サイズ計算
        options.inSampleSize = ImageResize(options, 512, 384);

        // 画像を読み込めるようにする
        options.inJustDecodeBounds = false;
        is = url.openStream();

        // 画像を取得
        get_image = BitmapFactory.decodeStream(is, null, options);
        is.close();
} catch (Exception e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
}

*****画像のリサイズを決めるメソッド*****

public static int ImageResize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {
        if (width > height) {
            inSampleSize = Math.round((float)height / (float)reqHeight);
        } else {
            inSampleSize = Math.round((float)width / (float)reqWidth);
        }
    }
    return inSampleSize;
}	

詳しくはWebで!←
今回はソースだけ載せときます(´・ω・)
参考にさせて頂いたサイト様も後で追加させて頂きますので!

リサイズして読み込む処理は以上です。

これだけで今回は安定しましたが、念のためにメモリ解放処理も付けておくとさらに安心できるでしょう。

This entry was posted in Android, Java, プログラミング関連, 備忘録 and tagged . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です