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