難しい問題にぶち当たりました…
これが私の話です:
私のデバイスは 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(...)
、うまくいきませんでした。(小さい画像を使用して同じコードをテストすると、問題ありません)
この問題を解決する方法を知っている専門家はいますか? ありがとう!