2017-01-10 10 views
0


ここに私の問題があります:
アップロードするために同じ画像のさまざまなサイズの中から選択するようにユーザーに求めています。
私のインターフェイスには4つのボタンがあり、それぞれが幅、画像の高さ、ファイルの長さに関する情報を提供します。

私はBitmap.createScaledBitmapを呼び出すイメージの4つのバージョンを生成し、それらのビットマップを再びファイルに圧縮しました。
私はビットマップをリサイクルして、ファイルを削除する必要があることをよく知っています。

ただし、大きなファイルを計算しようとすると、のcreateScaledBitmapがメモリ不足の例外をスローします。 ファイルをデコードするには、inJustDecodeBoundsオプションを使用するように言われましたが、ヌルビットマップが返されます。Android拡大縮小画像ファイルの長さを取得する

誰かがこの問題を解決する方法について考えていますか?ここで

コードです:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = false; 
options.inPreferredConfig = Bitmap.Config.RGB_565; 
Bitmap bmp = getScaledBitmap(BitmapFactory.decodeFile(uri, options), ratio); 

private Bitmap getScaledBitmap(Bitmap bmp, float ratio) { 
    int srcWidth = bmp.getWidth(); 
    int srcHeight = bmp.getHeight(); 
    int dstWidth = (int)(srcWidth * ratio); 
    int dstHeight = (int)(srcHeight * ratio); 
    Bitmap result = Bitmap.createScaledBitmap(bmp, dstWidth, dstHeight, true); 
    bmp.recycle(); 
    return result; 
} 
+0

コードを共有できますか? –

+0

あなたの質問は、http://stackoverflow.com/questions/15552076/android-bitmap-createscaledbitmap-throws-java-lang-outofmemoryerror-mostly-on-jeの複製であると思います。私はそれが助けになるかどうかはわかりませんが、私はそこに答えを見ることをお勧めします。 –

+0

[Android Bitmap.createScaledBitmap]は、ほとんどがJelly Bean 4.1でjava.lang.OutOfMemoryErrorをスローする可能性があります(http://stackoverflow.com/questions/15552076/android-bitmap-createscaledbitmap-throws-java-lang-outofmemoryerror-mostly- on-je) –

答えて

0

あなたの回答に答えるために、私はそれが重複することは考えていません。私は以前あなたがリンクしたスレッドを見つけましたが、それはかなり古く、私の問題を解決しませんでした。

とにかく、私はこの問題を解決しました。

私はまず、メモリ管理のために良いと言われているGlideライブラリを使って試しました。しかし、改善がありましたが、完璧ではなく、問題が再び発生しました。

使用するアンドロイド:largeHeap = "true"私の悪夢に終止符を打つ。これは、マニフェストのアプリケーションフィールドで設定する必要があります。

他の人に役立つことを願っています。

関連する問題