Android中Bitmap, Drawable, Byte,ID之间的转化

1.  Bitmap 转化为 byte
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] array= out.toByteArray();

2. byte转化为bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

3. bitmap转化为Drawable
Drawable drawable = new FastBitmapDrawable(bitmap);

4. Drawable转化为bitmap
 a. BitmapDrawable, FastBitmapDrawable直接用getBitmap
 b. 其他类型的Drawable用Canvas画到一个bitmap上
      Canvas canvas = new Canvas(bitmap)
      drawable.draw(canvas)


5.id转化graphic.drawable

   Drawable drawable = getResources().getDrawable(R.drawable.icon);


6.id转化成Bitmap

   Bitmap bitmap = BitmapFactory. decodeResource (Resources   res, int id)

1、Drawable → Bitmap

public static Bitmap drawableToBitmap(Drawable drawable) {
 
Bitmap bitmap = Bitmap
 
.createBitmap(
 
drawable.getIntrinsicWidth(),
 
drawable.getIntrinsicHeight(),
 
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
 
: Bitmap.Config.RGB_565);
 
Canvas canvas = new Canvas(bitmap);
 
// canvas.setBitmap(bitmap);
 
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
 
drawable.getIntrinsicHeight());
 
drawable.draw(canvas);
 
return bitmap;
 
}

 2、从资源中获取Bitmap

Resources res=getResources();
 
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);

 3、Bitmap → byte[]

private byte[] Bitmap2Bytes(Bitmap bm){
 
ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
 
return baos.toByteArray();
 
}

 4、byte[] → Bitmap

写道
private Bitmap Bytes2Bimap(byte[] b){

if(b.length!=0){

return BitmapFactory.decodeByteArray(b, 0, b.length);

}

else {

return null;

}

}

 5、保存bitmap

static boolean saveBitmap2file(Bitmap bmp,String filename){
 
CompressFormat format= Bitmap.CompressFormat.JPEG;
 
int quality = 100;
 
OutputStream stream = null;
 
try {
 
stream = new FileOutputStream("/sdcard/" + filename);
 
} catch (FileNotFoundException e) {
 
// TODO Auto-generated catch block
 
Generated by Foxit PDF Creator © Foxit Software
 
http://www.foxitsoftware.com For evaluation only.
 
e.printStackTrace();
 
}
 
return bmp.compress(format, quality, stream);
 
}

 6、将图片按自己的要求缩放

// 图片源
 
Bitmap bm = BitmapFactory.decodeStream(getResources()
 
.openRawResource(R.drawable.dog));
 
// 获得图片的宽高
 
int width = bm.getWidth();
 
int height = bm.getHeight();
 
// 设置想要的大小
 
int newWidth = 320;
 
int newHeight = 480;
 
// 计算缩放比例
 
float scaleWidth = ((float) newWidth) / width;
 
float scaleHeight = ((float) newHeight) / height;
 
// 取得想要缩放的matrix参数
 
Matrix matrix = new Matrix();
 
matrix.postScale(scaleWidth, scaleHeight);
 
// 得到新的图片
 
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,
 
true);
 
// 放在画布上
 
canvas.drawBitmap(newbm, 0, 0, paint);

 7:File图片转Bitmap

Bitmap bt = BitmapFactory.decodeFile("/sdcard/myImage/" + "head.jpg");//图片地址

 8://图片转Bitmap

public Bitmap drawableToBitamp(int drawableResource) {<span style="white-space:pre">    </span>//可以取raw里面的资源
        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        opt.inPurgeable = true;
        opt.inInputShareable = true;
        InputStream is = this.getResources().openRawResource(drawableResource);
        BitmapFactory.decodeStream(is, null, opt);
        return BitmapFactory.decodeStream(is, null, opt);
    }

 

猜你喜欢

转载自ch-kexin.iteye.com/blog/2339536