Android实现水印
使用方法
mSourImage = (ImageView) findViewById(R.id.sour_pic);
mWartermarkImage = (ImageView) findViewById(R.id.wartermark_pic);
Bitmap sourBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.water_bg);
mSourImage.setImageBitmap(sourBitmap);
Bitmap textBitmap = ImageUtil.drawTextToLeftBottom(this, sourBitmap, "左下角", 36, Color.RED, 30, 30);
mWartermarkImage.setImageBitmap(textBitmap);
工具类
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
/**
-
水印图片工具类
-
@author cheng
*/
public class ImageUtil {/**
- 绘制文字到左下方
- @param context
- @param bitmap
- @param text
- @param size
- @param color
- @param paddingLeft
- @param paddingBottom
- @return
*/
public static Bitmap drawTextToLeftBottom(Context context, Bitmap bitmap, String text,
int size, int color, int paddingLeft, int paddingBottom) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(color);
paint.setTextSize(dp2px(context, size));
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
return drawTextToBitmap(context, bitmap, text, paint, bounds,
dp2px(context, paddingLeft),
bitmap.getHeight() - dp2px(context, paddingBottom));
}
/**
- 图片上绘制文字
*/
private static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String text,
Paint paint, Rect bounds, int paddingLeft, int paddingTop) {
Config bitmapConfig = bitmap.getConfig();
paint.setDither(true); // 获取跟清晰的图像采样 paint.setFilterBitmap(true);// 过滤一些 if (bitmapConfig == null) { bitmapConfig = Config.ARGB_8888; } bitmap = bitmap.copy(bitmapConfig, true); Canvas canvas = new Canvas(bitmap); canvas.drawText(text, paddingLeft, paddingTop, paint); return bitmap;
}
/**
- dip转pix
- @param context
- @param dp
- @return
*/
public static int dp2px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
}