我想從我的應用程序發送傳真。 傳真文檔的分辨率爲1728 x 2444像素。 所以我創建位圖,添加文本和/或圖片,並將其編碼爲CCITT(霍夫曼):創建位圖時OutOfMemoryError
Bitmap image = Bitmap.createBitmap(1728, 2444, Config.ALPHA_8);
Canvas canvas = new Canvas(image);
canvas.drawText("This is a fax", 100, 100, new Paint());
ByteBuffer buffer = ByteBuffer.allocateDirect(image.getWidth() * image.getHeight());
image.copyPixelsToBuffer(buffer);
image.recycle();
encodeCCITT(buffer, width, height);
這完美的作品在我的Galaxy SII(64 MB堆大小),但不是在模擬器(24 MB )。創建第二個傳真頁後,我分配緩衝區時得到「4223232字節的外部分配對於此進程太大... java.lang.OutOfMemoryError」。
我已經減少了從ARGB_8888(每字節4個字節)到ALPHA_8(1個字節)的顏色深度,因爲無論如何傳真頁面都是單色的。 我需要這個分辨率,我需要訪問像素進行編碼。
什麼是最好的方法?
我解決了它與重用Bitmap對象。使用recycle()或設置爲null不起作用。 – almisoft 2013-05-02 19:37:17