android - Canvas 上带/不带 Alpha channel 的 Bitmap.Config 差异

标签 android canvas bitmap

我正在 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/

相关文章:

javascript - 在 Canvas 中拖动图像并调整其大小(移动设备)

C# - 将图像复制到 8 位索引图像中

android - Windows 拒绝安装 Android ADB 驱动程序

android - 从字符串中删除字符串

javascript - 将 img 源(从 dataURL Canvas )获取到另一个页面

javascript - 通过html5 Canvas 绘制一个矩形?

android - 将图像从 fragment 传递到 Activity - 获取空对象

c - 使用c生成单色位图图像

android - OAuth同意屏幕是空白的,加载图标在android应用程序中一直旋转,

java - 相关实体的 GreenDao getter 返回空列表