9

難しい問題にぶち当たりました…

これが私の話です:

私のデバイスは Samsung Galaxy Note です。通常、 3264 * 2448ピクセルの解像度で写真を撮ります。詳細な情報を探しているときは細かい写真が好きですが、ここではAndroidで扱うのが巨大なので嫌いです。この大きな解像度の画像を読み取って表示できます。その上に線を描く必要があり、画像と線の両方を png に保存する必要があります。私の頭痛の種は、次のような変更可能なビットマップを作成しようとすると、Android が常にOut of memery exception を返すことです。

    Bitmap bmp = Bitmap.createBitmap(3264, 2448, Config.RGB_565);
    Canvas cv = new Canvas(bmp);
    //draw a line and save and restore canvas
    // I found an alternative solution yet proven to be uncorrect:
    myImageView.setDrawingCacheEnabled(true);
    myImageView.buildDrawingCache(true);
    Bitmap bmp = myImageView.getDrawingCache();
    //save bmp to png

とき

bmp.width * bmp.height * 4 > getScaledMaximumDrawingCacheSize()

例外が飛び出します。私はテストmyImageView.measure(...)しましたがmyImageView.layout(...)、うまくいきませんでした。(小さい画像を使用して同じコードをテストすると、問題ありません)

この問題を解決する方法を知っている専門家はいますか? ありがとう!

4

1 に答える 1

1

おそらく明確な解決策ではありませんが、ヒープサイズを増やしようとしましたか?

Android 2.2以下のバージョンの場合:

dalvik.system.VMRuntime.getRuntime().setMinimumHeapSize(sizeInBytes);

Android 2.3以降のバージョンの場合

android:largeHeap="true"
于 2012-11-04T14:52:51.153 に答える