最近的程序实现中,遇到一个需求,从流中得到数据,并生成Bitmap 对象. 现研究Bitmap生成如下:
Android SDK中对此类需求正有准备:
android.graphics.BitmapFactory
从它的名字来看:BitmapFactory。 Bitmap的工厂,很明显,就是一个如何创建Bitmap对象的工具。可以从不同的资源(文件,流,资源文件,字节数组)得到数据,创建一个Bitmap对象。
用法一:从流得到数据,创建一个Bitmap对象:
public static Bitmap decodeStream (InputStream is)
把Stream的数据解码到Bitmap对象中,如果Input Stream是空的,又或者数据不能解码到Bitmap。则返回null. 否则返回Bitmap对象。Sam此处是使用 onActivityResult(int requestCode, int resultCode, Intent data)中data所带数据作为输入源。
Uri uir = data.getData();
Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
public static Bitmap decodeStream (InputStream is, Rect outPadding, BitmapFactory.Options opts)
其它与上一个方法一致,只是参数三:BitmapFactory.Options这个匿名内部类需要关注。利用它,可以设置得到的Bitmap的压缩比例( inSampleSize ), 是否仅仅得到Bitmap长宽数据,而不真正给Bitmap分配空间( inJustDecodeBounds )等。 同时,它还可以得到Bitmap的长宽:( outHeight, outWidth )