Bitmap的基本使用

1、Drawable → Bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

?
1
2
3
Resources res=getResources();
 
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);
3、Bitmap → byte[]
?
1
2
3
4
5
6
7
8
9
private  byte [] Bitmap2Bytes(Bitmap bm){
 
ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
 
bm.compress(Bitmap.CompressFormat.PNG,  100 , baos);
 
return  baos.toByteArray();
 
}

4、byte[] → Bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private  Bitmap Bytes2Bimap( byte [] b){
 
if (b.length!= 0 ){
 
return  BitmapFactory.decodeByteArray(b,  0 , b.length);
 
}
 
else  {
 
return  null ;
 
}
 
}
5、保存bitmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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、将图片按自己的要求缩放

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 图片源
 
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

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

8://图片转Bitmap

?
1
2
3
4
5
6
7
8
9
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);
     }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值