我想从InputStreams中读取图像,并将它们绘制到我的画布上。不幸的是,图像可能非常大,并且很容易导致内存不足异常。 BitmapFactory允许我提供一个样本大小值,该值将在处理图像时对其进行下采样并避免内存问题。但是,图像质量会受到影响。
理想情况下,canvas会提供一个可以从InputStream绘制的绘制图像方法,而不是从Bitmap绘制,但是我没有找到任何类型的东西。这是否存在,或者有没有其他方法可以安全地从InputStream中渲染任意大的图像而不进行下采样?
答案 0 :(得分:0)
我不确定您使用的是哪种图像格式,但如果您想发送无损图像(或者丢失的图像比已经发生的图像少),则无法比JPEG更好地压缩。所以,先使用JPEG。
以下是在Canvas上绘制图像的示例。覆盖'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
答案 1 :(得分:0)
答案似乎是:不,没有。