开门见山,添加水印的方法非常简单,其实就只有3个步骤:
1、载入原始图片
2、载入水印图片
3、保存带有水印的图片
实现的原理就是:获取原始图片的宽高,然后,新建一个同样宽高的bitmap,将这个新的bitmap作为画布,接着,就在这个画布上面画原图,画水印图片,有文字就接着画文字。
上面哪个顺序一定不能乱,不然你可能就看不到水印,或则文字了,因为画在原图下面去了
绘制水印的代码如下:
private static bitmap createwatermaskbitmap(bitmap src, bitmap watermark, int paddingleft, int paddingtop) { if (src == null) { return null; } int width = src.getwidth(); int height = src.getheight(); //创建一个bitmap bitmap newbitmap = bitmap.createbitmap(width, height, config.argb_8888);// 创建一个新的和src长度宽度一样的位图 //将该图片作为画布 canvas canvas = new canvas(newbitmap); //在画布 0,0坐标上开始绘制原始图片 canvas.drawbitmap(src, 0, 0, null); //在画布上绘制水印图片 canvas.drawbitmap(watermark, paddingleft, paddingtop, null); // 保存 canvas.save(canvas.all_save_flag); // 存储 canvas.restore(); return newbitmap; }
绘制文字的代码如下:
/** * 绘制文字到中间 * * @param context * @param bitmap * @param text * @param size * @param color * @return */ public static bitmap drawtexttocenter(context context, bitmap bitmap, string text, int size, int color) { 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, (bitmap.getwidth() - bounds.width()) / 2, (bitmap.getheight() + bounds.height()) / 2); } /** * 图片上绘制文字 */ 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; }
效果图如下:
github地址为:https://github.com/chenguo4930/watermark
git地址为:https://github.com/chenguo4930/watermark.git
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
Xamarin 安卓 相机 各种坑 目标API Android 6以后,我选的目标API版本是 Android 10
Android 9.0+软件某些功能突然暴毙:cleartext not permitted
Android : Resource is not a Drawable (color or path)
Flutter问题集锦——Android Studio 4.0.1 在AVD Manger中启动模拟器报“unable to locate abd”
网友评论