我正确地说16位图像将被解码并绘制得比24位或32位更快?我知道文件大小会更少,但如果位图实际绘制速度比转换它们的速度更快。如果速度更快,我将如何去保存16位jpeg文件?我只在Photoshop中找到一个选项来保存一个16位的位图...这是54 MB。16位图像和Android处理
回答
这取决于。如果你的屏幕(以及绘制到它的表面)是16位,它可以更快;如果它们是32位,则32位位图可能会更快。
但是,如果您在资源方面(这意味着JPEG或PNG图像),说他们是“16位”或“32位”是没有意义的。 JPEG是一种颜色表示,通常会扩展为32位,但您也可以将其解压缩到16位(并且可能希望在抖动时进行抖动,以使其看起来不错)。 PNG可以存储很多表示,具体取决于图像,并且通常会选择最好的。此外,在包装过程中,aapt会遍历所有PNG图像,并将其重新压缩为尽可能小的最终图像,因此如果可能的话,甚至可以使用调色板表示。
因此,如何存储图像并不重要;重要的是在运行时解压缩时创建的位图。这里有一些一般的规则:
- 如果图像有alpha,它将需要解压缩到完整的32位。
- 如果帧缓冲区和曲面是32位,应该将图像解压缩到32位。
- 如果图像没有alpha,它可能是888(32位)或565(16位)。挑选使用的是...很棘手。
从历史上看,我们在平台上使用的设备有16位屏幕,所以我们必须处理它的复杂性。主要问题是平衡内存使用与渲染性能与质量之间的平衡。对于内存使用和渲染性能来说,16位是最好的...但是,对于许多图像来说,如果图像没有抖动,将会出现色带。
在哪里做抖动也很棘手:理想情况下,你会做它的一部分,生成原始图像,但这限制了你可以用它做什么(没有缩放,这意味着不使用9补丁)。另一方面,渲染时可以做到这一点,但这意味着您需要将图像加载为32位,并在每次将图像拖入屏幕时抖动。这提供了最大的灵活性,但具有更多的内存和性能影响。
现在在实践中,这实际上最终成为平台的一个罕见问题 - 因为几乎所有用作9补丁或其他类似图像的图像都具有透明度,因此无论如何都需要将其加载为32位,因此它渲染时不会太大。
这一切都归结做的是:
- 如果图像的透明度,不用担心,它无论如何都会被载入32位。
- 如果您的图像没有透明度,你将需要:
- 决定是否抖动原始图像。这将在16位屏幕上提供更好的质量(您会比关键性能渲染代码更好地抖动),但不会充分利用32位屏幕。
- 让平台决定要做什么。这将给16位和32位屏幕带来好的结果,但您不想缩放图像。
- 自己加载图像,并明确控制API以决定使用何种格式以及何时(或如果)抖动。
我希望你的意思是16位,RGB 565格式,是的,它应该比24位RGB 888或32位RGB 8888格式更快。您在photoshop中看到的内容可能与RGB 565不同,但是每个组件16位的RGB,使每像素8位RGB增加一倍。
AFAIK JPEG不支持16位格式(每个像素为565或16位)。
- 1. 16位灰度png图像的Python图像处理
- 2. 24位图图像和16位图图像中的RGB颜色
- 3. Android位图处理
- 4. Android图像处理
- 5. Android图像处理
- 6. Emgu Cv和16位灰度图像
- 7. 8位微处理器上的C - 32位和16位算术
- 8. 16位(565)图像读取
- 9. Android图像处理和模式检测
- 10. Android DSP和图像处理加速
- 11. Java和Android之间的图像处理
- 12. Android:处理图像缩放和质量
- 13. 16位图像转换为32位
- 14. 处理16位采样音频
- 15. Android高级图像处理
- 16. Android处理大图像
- 17. Android:处理图像的HashMap.put
- 18. Android上的图像处理
- 19. Android图像处理库
- 20. Android ZXing图像处理
- 21. 在android中处理图像
- 22. Android:实时图像处理
- 23. C++中的位图图像处理
- 24. com.google.zxing.binarybitmap错误与处理位图图像
- 25. 图像处理:位图旋转(C++/GDI +)
- 26. Android位图OutOfMemoryError +游戏如何处理大量图像?
- 27. 将RGB图像转换为RGB 16位和8位
- 28. Winforms的RGB图像灰度8位和16位
- 29. R和图像处理
- 30. 笨和GD图像处理
很好的答案,谢谢。 – jfisk 2010-08-22 06:05:43