2011-05-13 82 views
0

我想从InputStreams中读取图像,并将它们绘制到我的画布上。不幸的是,这些图像可能非常大,并且很容易导致内存不足异常。 BitmapFactory允许我提供一个样本大小值,它将在处理图像时对样本进行缩减采样,并避免内存问题。但是,图像质量受损。Android:是否可以在不重新采样的情况下绘制大图像?

理想情况下,canvas会提供一个可以从InputStream绘制而不是从Bitmap绘制的绘画图像方法,但是我没有找到任何这种类型的东西。这是否存在,或者是否有任何其他方法可以安全地从InputStream中随意渲染任意大的图像而不下采样?

+0

我非常害怕您必须创建一个位图,除非您采用“drawPixel”方法并实现您自己的InputStream绘图方法。 – harism 2011-05-13 16:00:59

+0

我为png图像做了这个,在这里我一次解码一行像素的图像,并且随时进行绘制。不幸的是,我需要将BitmapFactory用于jpeg图像,因为我不知道如何解码Jpegs,这是我的问题所在。 – ab11 2011-05-13 16:06:14

回答

0

的答案似乎是:没有,没有。

0

我不确定你使用的是什么图像格式,但是如果你想发送一个无损图像(或损失比已经发生的少),它不能被压缩得比JPEG更好。所以,请先使用JPEG。

下面是在画布上绘制图像的示例。重写'draw'方法。 http://www.androidsnippets.com/drawing-an-image-as-a-map-overlay2

在结束时,黑客它

也许,预裂的图像;压缩每一个人,并在最后恢复听起来合乎逻辑。

这里有一些尝试,

http://kalanir.blogspot.com/2010/02/how-to-split-image-into-chunks-java.html

而且

http://www.anddev.org/multimedia-problems-f28/chunk-of-a-big-big-image-t6211.html

+0

感谢您的回复。但是,这不适合我的情况。 – ab11 2011-05-13 16:07:28

相关问题