有关图片处理的一些片段--Bitmap.Config参数

来源:互联网 发布:云计算安全和大数据 编辑:程序博客网 时间:2024/06/05 16:02

1、Bitmap.Config参数

Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as well as the ability to display transparent/translucent colors

即决定图片像素点的存储,即用图片查看器看图片属性时候的位深参数。

ARGB_4444 每个像素点用2byte表示,A即表示透明度,即ARGB每个属性用4个bits记录,虽然文档推荐换成ARGB_8888,但是有的时候还是需要用这个。- - - -  一切为了内存

ARGB_8888 每个像素点4个byte。也就是说,同样的图片,这种方式存储的,会比上边的大一倍

ALPHA_8 只是用来记录半透明值,而不记录RGB值,目前没有用到过。(用这个值生成的BItmap可以设置在ImageView上,效果挺有意思的...  但是,compress到disk上,发现文件大小为0)

        RGB_565 分别用 5个bits 即32位有效值保持R,B,6个bits保存G,则一个像素使用2个byte。没有记录透明层。

   因为android中,JPG不会有透明属性,所以JPG类型的文件一般使用RGB_565来存储。而PNG一般会用ARGB_8888/4444来存储,当然也会有565形式。但是要注意的是PNG在调用Bitmp.compress方法的时候,因为PNG是无损存储,则quality参数没有用。但是使用JPEG时候,会把透明层部分压缩掉

一个示例:

InputStream inputStream = getAssets().open("boliu123.png");Bitmap bitmap = BitmapFactory.decodeStream(inputStream);if(bitmap.getConfig()!=null){Config config = bitmap.getConfig();Log.i("config", config.name());if(bitmap.getConfig()==Config.ARGB_8888){int width = bitmap.getWidth();int height = bitmap.getHeight();int piexl[] = new int[width*height];bitmap.getPixels(piexl, 0, width, 0, 0, width, height);Bitmap bitmap1 = Bitmap.createBitmap(piexl, width, height, Config.ARGB_4444);//一切为了内存bitmap1.compress(CompressFormat.PNG, 100, os)}}


    


原创粉丝点击