Bitmap与Drawable、byte[]、图片资源、图片文件的转换(二)

来源:互联网 发布:淘宝上的台式机能买吗 编辑:程序博客网 时间:2024/04/30 04:26
 Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。

     Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。


1.从资源获取bitmap

使用bitmap工厂的dacodeResource()方法


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


2.从图片文件获取bitmap

从图片文件获取bitmap后,才能调用ImageView的setImageBitmap(Bitmap bitmap)方法

使用bitmap工厂的dacodeFile()方法

String filePath="c:/01.jpg";

Bitmap bitmap=BitmapFactory.decodeFile(filePath);


3.从图片文件按比例获取bitmap

如果图片过大,可能导致Bitmap对象装不下图片
解决办法:
String filePath="c:/01.jpg";
Bitmap bitmap=BitmapFactory.decodeFile(filePath,getBitmapOption(2)); /*将图片的长和宽缩小为原来的1/2*/
private Options getBitmapOption(int inSampleSize){
        System.gc();
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPurgeable = true;
        options.inSampleSize = inSampleSize;
        return options;
}


4.bitmap转为图片文件

从网络下载到的图片数据转为bitmap后,就要转为图片文件保存。

创建文件输出流,调用bitmap对象的compress方法

该方法中,第一个参数是上一级文件夹,第二个参数是文件名



5.btye[]转为bitmap

从网络下载到的图片数据为btye[]字节数组,要将它转为bitmap

我们都知道,字节是计算机中数据处理的基本单位。

使用bitmap工厂的dacodeByteArray()方法

HttpEntity entity = httpResponse.getEntity();
byte[] byteIn = EntityUtils.toByteArray(entity);

BitmapFactory.decodeByteArray(byteIn, 0, byteIn.length);



6.bitmap转为btye[]

当图片上传到服务器时,要用到将bitmap转为btye[]

创建字节数组输出流,调用bitmap对象的compress方法

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

//baos是ByteArrayOutputStream的首字母拼写

同理,fos是FileOutputStream的首字母拼写





0 0
原创粉丝点击