我正在 Canvas 上绘制一些位图。这些位图中的一些(大部分)使用 alpha channel ,透明度/半透明度对于图像看起来是否正确至关重要。这是必要的,因为我在整个 Activity
中执行了一些图像处理。
最终用户完成了他们的任务,我使用此方法将 Canvas 保存为 PNG:
Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
此时我不再对 Canvas /图像进行任何修改,但我将图像显示到另一个 Activity
中的 Canvas
。我希望它看起来完全与之前的 Activity
相同,所以我使用 Bitmap.Config.RGB_565 是否重要
而不是我会丢失信息吗?
最佳答案
使用Bitmap.Config.RGB_565肯定会丢失信息。它在手机显示屏上可能无法辨别,但当您从 RGB_8888 变为 RGB_565 时,您将从 24 位颜色信息(不包括 alpha)变为 16 位颜色信息。 RGB_8888 中没有 256 个不同的红色、绿色和蓝色值,而 RGB_565 中只有 64 个不同的绿色值和 32 个不同的红色和蓝色值。这可能会导致 RGB_565 图像中出现 strip 或其他类型的量化伪像。
关于android - Canvas 上带/不带 Alpha channel 的 Bitmap.Config 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057510/