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); |
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 ; } } |
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); }
|