Android 提供了BitmapFactory(通过stream/resource)和Bitmap.createBitmap(通过宽、高)的方式来创建一张图片,创建的时候通过Bitmap.Config来设置不同的配置,在使用的时候需要根据实际的需求进行配置。
Bitmap.Config
A:透明度
R:红色
G:绿
B:蓝
每个字符表示的意思如上,通常使用的config有以下几种类型:
- ARGB_8888:带透明度,每个像素占8位,即A=8,R=8,G=8,B=8,也就是说一个像素点占8+8+8+8=32位
- RGB_565:不带透明度,R=5,G=6,B=5,也就是说一个像素点占5+6+5=16位
- ARGB_4444:带透明度,每个像素占4位,A=4,B=4,G=4,B=4,也就是一个像素点占4+4+4+4=16位
- ALPHA_8:每个像素占用8位,只有透明通道,没有颜色,一个像素占用8位
使用
实际上使用的过程需要根据我们的需求(内存、是否需要透明度等)进行定义,ARGB_8888是质量最高,但同时也是占用内存最大的,比如我们的view 是1080 * 1920的话,因为每8位是一个字节的大小,所以一个像素就是4个字节,对应的图片大小就是 1920 * 1080 * 4 / 1048576 = 8M (1MB = 1048576字节),8M代价还是挺大的。如果想要节省内存可以使用ARGB_4444 或者 RGB_565,相比ARGB_8888内存占用都会小一半,但ARGB_4444的失真情况是比较严重,RGB_565图片的失真会比较小,如果对于透明度没有要求的话,这个是最佳的选择。
网友评论