说起水印其实很简单,就是在一张图片上面画上另一张图片或文字
实现如下:
package com.tang.watermark;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.Bitmap.Config;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView imageView;
Bitmap mark;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageResource(R.drawable.heihei);
mark = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Bitmap temp = watermark(drawableToBitmap(imageView.getDrawable()),mark,50,100);
imageView.setImageBitmap(temp);
}
});
}
/**
* 将bitmap转换为Drawable
* @param bitmap
* @return
*/
public static Drawable bitmapToDrawable(Bitmap bitmap)
{
BitmapDrawable bd = new BitmapDrawable(bitmap);
return bd;
}
/**
* @param src
* @param bg
* @param color
* @return
*/
public static Bitmap watermark(Bitmap src,Bitmap mark,int x,int y)
{
int w = src.getWidth();
int h = src.getHeight();
Bitmap newb = Bitmap.createBitmap( w, h, Config.ARGB_8888 );
Canvas cv = new Canvas(newb);
cv.drawBitmap(src, 0, 0, null );
cv.drawBitmap(mark,x, y, null );
cv.save( Canvas.ALL_SAVE_FLAG );//保存
cv.restore();//存储
return newb;
}
/**
* Drawable 转换为Bitmap
* @param drawable
* @return
*/
public static Bitmap drawableToBitmap(Drawable drawable) {
// 取 drawable 的长宽
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
// 取 drawable 的颜色格式
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
drawable.draw(canvas);
return bitmap;
}
}