Bitmap与byte、file、Drawable之间的相互转换

1、Bitmap转换成文件:
    (1)、根据指定的文件,获取这个文件的输出流
    (2)、通过使用Bitmap的compress方法,设置图片存储格式,图片的质量,并制定图片的存储的输出流。
    (3)、通过刷新输出流,就完成Bitmap到文件的转换。
代码:
public void saveBitmap(Bitmap bm) {
Log.e("SaveBitmap", "保存图片");
File f = new File("/sdcard/namecard/", "bitmap.jpg");
if (f.exists()) {
f.delete();
}
try {
FileOutputStream out = new FileOutputStream(f);
bm.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
Log.i("SaveBitmap", "已经保存");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

2、Bitmap转换成byte数组
        根保存成文件的方式类似:使用ByteArrayOutputStream
代码:
public byte[] transformBitmapToByte(Bitmap bm){
byte[] bytes = null;
ByteArrayOutputStream out = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG,90,out);
bytes = out.toByteArray();
if (bytes == null || bytes.length <= 0){
Log.i("transformBitmapToByte","Fail to transform data");
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return bytes;
}
3、Bitmap转换成Drawable
代码:
private Drawable transformBitmapToDrawable(Bitmap bitmap) {
Drawable drawable = null;
File tempFile = new File(Environment.
getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).
toString(), "temp.jpg");
if(tempFile.exists()){
try {

FileOutputStream out = new FileOutputStream(tempFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
drawable = BitmapDrawable.createFromPath(tempFile.getAbsolutePath());

} catch (Exception e) {
e.printStackTrace();
}
}
if (drawable == null){
Log.i("BitmapToDrawable", "Fail to transform drawable");
}
return drawable;
}

4、图片文件转换成Bitmap
    通过使用BitmapFactory中的方法可以直接获取一个Bitmap对象。

你可能感兴趣的:(Android)