ここに私の問題があります:
アップロードするために同じ画像のさまざまなサイズの中から選択するようにユーザーに求めています。
私のインターフェイスには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;
}
コードを共有できますか? –
あなたの質問は、http://stackoverflow.com/questions/15552076/android-bitmap-createscaledbitmap-throws-java-lang-outofmemoryerror-mostly-on-jeの複製であると思います。私はそれが助けになるかどうかはわかりませんが、私はそこに答えを見ることをお勧めします。 –
[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) –