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

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)
	}
}


    


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值