为图片加水印

2014-11-24 02:31:15 · 作者: · 浏览: 0

@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);


imageview iv=(imageview)findviewbyid(r.id.testimageview);

drawable d=this.getresources().getdrawable(r.drawable.icon);

bitmap bm=createbitmap(drawabletobitmap(d),drawabletobitmap(this.getresources().getdrawable(r.drawable.bonus_delivery_small)));

iv.setimagebitmap(bm);
}

//drawable转换bitmap
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;

}

//icon加入水印
private bitmap createbitmap( bitmap src, bitmap watermark )
{
string tag = "createbitmap";
log.d( tag, "create a new bitmap" );
if( src == null )
{
return null;
} int w = src.getwidth();
int h = src.getheight();
int ww = watermark.getwidth();
int wh = watermark.getheight();
//create the new blank bitmap
bitmap newb = bitmap.createbitmap( w, h, config.argb_8888 );//创建一个新的和src长度宽度一样的位图
canvas cv = new canvas( newb );
//draw src into
cv.drawbitmap( src, 0, 0, null );//在 0,0坐标开始画入src
//draw watermark into
cv.drawbitmap( watermark, w - ww-6, h - wh-2, null );//在src的右下角画入水印
//save all clip
cv.save( canvas.all_save_flag );//保存
//store
cv.restore();//存储
return newb;
}

作者“tianlanlan”