Bitmap.Config画布上有/无alpha通道的差异

use*_*209 1 android canvas bitmap

我正在绘制一些Bitmaps到画布.这些位图中的一些(大多数)使用alpha通道,透明度/半透明度对于图像看起来正确至关重要.这是必要的,因为我在整个过程中执行了一些图像处理Activity.

最终用户完成了他们的任务,我使用画布并使用此方法将其保存到PNG:

Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
Run Code Online (Sandbox Code Playgroud)

此时我不再对画布/图像进行任何修改,但我确实将图像显示Canvas在另一个图像中Activity.我希望它看起来以前完全一样Activity,所以如果我使用它Bitmap.Config.RGB_565或者我会丢失信息是否重要?

小智 7

如果您使用Bitmap.Config.RGB_565,您肯定会丢失信息.它可能在手机显示屏上无法辨别,但当您从RGB_8888转到RGB_565时,您将从24位颜色信息(不计算alpha)变为16位颜色信息.RGB_8888中没有256个不同的红色,绿色和蓝色值,RGB_565中只有64个不同的绿色值和32个不同的红色和蓝色值.这可能会导致RGB_565图像中出现条带或其他类型的量化伪像.

  • Romain Guy对所有这些进行了很好的解释.565会给你更少的整体色调,我相信是不透明的.http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/ (4认同)