欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中Bitmap用法(显示,保存,缩放,旋转)实例分析

程序员文章站 2023-11-27 19:02:16
本文实例讲述了android中bitmap用法。分享给大家供大家参考。具体如下: 在android sdk中可以支持的图片格式如下:png , jpg , gif和bmp...

本文实例讲述了android中bitmap用法。分享给大家供大家参考。具体如下:

在android sdk中可以支持的图片格式如下:png , jpg , gif和bmp。

1.bitmap的创建

借助于bitmapfactory。

1)资源中的图片

使用bitmapfactory获取位图

复制代码 代码如下:
bitmap bmp = bitmapfactory.decoderesource(this.getresources(), r.drawable.testimg);

或者是:

resources res=getresources();
//使用bitmapdrawable获取位图
//使用bitmapdrawable (inputstream is)构造一个bitmapdrawable;
//使用bitmapdrawable类的getbitmap()获取得到位图;
// 读取inputstream并得到位图
inputstream is=res.openrawresource(r.drawable.testimg); 
bitmapdrawable bmpdraw=new bitmapdrawable(is);
bitmap bmp=bmpdraw.getbitmap();

2)sd卡中的图片

复制代码 代码如下:
bitmap bmp = bitmapfactory.decodefile("/sdcard/testbitmap/testimg.png")

2. 把 bitmap 保存在sdcard中

file fimage = new file("/sdcard/testbitmap/testimg.png");  
fimage.createnewfile();
fileoutputstream istream = new fileoutputstream(fimage); 
bmp.compress(compressformat.png, 100, istream); 
istream.close();
fimage.close();
istream =null;
fimage =null;
//写到输出流里,就保存到文件了。

3.使用网络中的图片

//图片的链接地址  
string imgurlstr = "http://tx.bdimg.com/sys/portrait/item/990e6271796a7a6c170c.jpg";  
url imgurl = new url(imgurlstr);  
urlconnection conn = imgurl.openconnection();  
conn.connect();  
inputstream is = conn.getinputstream();  
bufferedinputstream bis = new bufferedinputstream(is);
//下载图片
bitmap bmp = bitmapfactory.decodestream(bis);
//关闭stream
bis.close();  
is.close(); 
imgurl =null;

4.显示图片

1)转换为bitmapdrawable对象显示位图

// 转换为bitmapdrawable对象
bitmapdrawable bmpdraw=new bitmapdrawable(bmp);
// 显示位图
imageview iv2 = (imageview)findviewbyid(r.id.imageview02);
iv2.setimagedrawable(bmpdraw);

2)使用canvas类显示位图

复制代码 代码如下:
canvas.drawbitmap(bmp, 0, 0, null);

5.缩放位图

1)将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎一样:

复制代码 代码如下:
drawbitmap(bitmap bitmap, rect src, rect dst, paint paint)

2)在原有位图的基础上,缩放原位图,创建一个新的位图:

复制代码 代码如下:
createbitmap(bitmap source, int x, int y, int width, int height, matrix m, boolean filter)

3)借助canvas的scale(float sx, float sy) ,不过要注意此时整个画布都缩放了。

4)借助matrix:

matrix matrix=new matrix();
matrix.postscale(0.2f, 0.2f);
bitmap dstbmp=bitmap.createbitmap(bmp,0,0,bmp.getwidth(),bmp.getheight(),matrix,true);
canvas.drawbitmap(dstbmp, 10, 10, null); 

6.旋转位图

借助matrix或者canvas来实现。

matrix matrix=new matrix();
matrix.postrotate(45);
bitmap dstbmp=bitmap.createbitmap(bmp,0,0,bmp.getwidth(), bmp.getheight(),matrix,true);
canvas.drawbitmap(dstbmp, 10, 10, null);

希望本文所述对大家的android程序设计有所帮助。