1.Android Bitmap与String的相互转换
String转换成Bitmap
public Bitmap stringToBitmap(String string) {
// 将字符串转换成Bitmap类型
Bitmap bitmap = null;
try {
byte[] bitmapArray;
bitmapArray = Base64.decode(string, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,
bitmapArray.length);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
Bitmap转换成String
public String bitmapToString(Bitmap bitmap){
//将Bitmap转换成字符串
String string=null;
ByteArrayOutputStream bStream=new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG,100,bStream);
byte[]bytes=bStream.toByteArray();
string=Base64.encodeToString(bytes,Base64.DEFAULT);
return string;
}
示例
public void Test(){
ImageView img = (ImageView) findViewById(R.id.img);
//首先将图片转换成bitmap,然后将bitmap转换成String
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
String bitmapString = bitmapToString(bitmap);
//将String转换成Bitmap之后,通过setImageBitmap将图片显示出来
img.setImageBitmap(stringToBitmap(bitmapString));
}
文字转bitmap,注意bitmap大小,否则会放大失真,也可以使用截屏的方法:控件文字内容转bitmap
public Bitmap getNewBitMap(String text,int height,int width) {
Bitmap newBitmap = Bitmap.createBitmap(width,height, Config.ARGB_4444);
Canvas canvas = new Canvas(newBitmap);
canvas.drawBitmap(newBitmap, 0, 0, null);
TextPaint textPaint = new TextPaint();
textPaint.setAntiAlias(true);
textPaint.setTextSize(height*2/3);
textPaint.setColor(Color.rgb(0, 0, 0));
String familyName ="宋体";
Typeface font = Typeface.create(familyName,Typeface.BOLD);
textPaint.setTypeface(font);
StaticLayout sl= new StaticLayout(text, textPaint, newBitmap.getWidth(), Layout.Alignment.ALIGN_CENTER,1.0f, 0.0f, false);
canvas.translate(0,height/10);
sl.draw(canvas);
return newBitmap;
}