用户登录
用户注册

分享至

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

  • 作者: 野丫头的幸福
  • 来源: 51数据库
  • 2021-10-02

本文实例讲述了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程序设计有所帮助。

软件
前端设计
程序设计
Java相关