Android Bitmap处理

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

猜你喜欢

转载自blog.csdn.net/P876643136/article/details/85260300