Android添加水印的正确方法 只要三步!
程序员文章站
2024-03-02 21:11:34
开门见山,添加水印的方法非常简单,其实就只有3个步骤:
1、载入原始图片
2、载入水印图片
3、保存带有水印的图片
实现的原理就是:获取原始图片的宽高,然后,新建一...
开门见山,添加水印的方法非常简单,其实就只有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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 使用Servlet处理一个上传的文件
下一篇: spring启动加载程序的几种方法介绍