我想从我的应用程序发送传真。传真文档的分辨率为 1728 x 2444 像素。所以我创建了一个位图,添加文本和/或图片并将其编码为 CCITT (Huffman):
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 个字节),因为传真页面无论如何都是单色的。我需要这个分辨率,并且我需要访问像素进行编码。
什么是最好的方法?