加水印代码

public Bitmap addWaterMark(Bitmap src, String water, Context context){
            Bitmap tarBitmap = src.copy(Config.ARGB_8888, true);
            int w = tarBitmap.getWidth();
            int h = tarBitmap.getHeight();
            Canvas canvas = new Canvas(tarBitmap);
            //启用抗锯齿和使用设备的文本字距
            Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
            //字体的相关设置
            textPaint.setTextSize(35.0f);//字体大小
            textPaint.setTypeface(Typeface.DEFAULT_BOLD);
            textPaint.setColor(Color.BLACK);
            textPaint.setShadowLayer(3f, 1, 1,context.getResources().getColor(android.R.color.background_dark));
            //图片上添加水印的位置,这里设置的是中下部3/4处
            canvas.drawText(water, (float)(w*0.05), (float) (h*0.9), textPaint);
            canvas.save(Canvas.ALL_SAVE_FLAG);
            canvas.restore();
            return tarBitmap;
        }  

水印代码换行

事实上对于canvas.drawText()是不能实现自动换行的。

在string参数里加入/r/n,都是无效的,所以同TextPaint类

具体代码如下:

public Bitmap addWaterMark1(Bitmap src, String water, Context context){
            Bitmap tarBitmap = src.copy(Config.ARGB_8888, true);
            int w = tarBitmap.getWidth();
            int h = tarBitmap.getHeight();
            Canvas canvas = new Canvas(tarBitmap);
            //启用抗锯齿和使用设备的文本字距
            TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
            //字体的相关设置
            textPaint.setTextSize(35.0f);//字体大小
            textPaint.setTypeface(Typeface.DEFAULT_BOLD);
            textPaint.setColor(Color.BLACK);
            textPaint.setShadowLayer(3f, 1, 1,context.getResources().getColor(android.R.color.background_dark));
            StaticLayout layout = new StaticLayout(water, textPaint, 500,
                    Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);
            canvas.save();
            canvas.translate((float)(w*0.05), (float) (h*0.9));//从20,20开始画
            layout.draw(canvas);
            canvas.save(Canvas.ALL_SAVE_FLAG);
            return tarBitmap;
        }  

其中StaticLayout中的参数500,是来设置多长之后 开始换行。

Android 实现图片加水印的更多相关文章

  1. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

  2. thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印

    今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...

  3. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  4. php 分享两种给图片加水印的方法

    本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...

  5. Java图片处理(二)图片加水印

    图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...

  6. PHP给图片加水印

    <?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...

  7. 如何用node.js批量给图片加水印

    上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...

  8. 使用 ImageEnView 给图片加水印,及建缩略图

    摘要: 使用 ImageEnView 给图片加水印,及建缩略图 {Power by hzqghost@21cn.com}unit CutWater; interface uses  Math,imag ...

  9. php对图片加水印--将图片先缩小,再在上面加水印

    方法: /**  * 图片加水印(适用于png/jpg/gif格式)  *  * @author flynetcn  *  * @param $srcImg  原图片  * @param $water ...

随机推荐

  1. github常用命令

    全局配置 git config --global user.name "lewiscutey"git config --global user.email "lewisc ...

  2. linux内核input子系统解析【转】

    转自:http://emb.hqyj.com/Column/Column289.htm 时间:2017-01-04作者:华清远见 Android.X windows.qt等众多应用对于linux系统中 ...

  3. 修改Linux命令提示符

    vim .bashrc export PS1='\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\W\$'

  4. 使用JAXB解析xml文件(一)

      1.java中解析xml的几种方式 1.1 JDK原生dom形式 原理:一次性把xml读入内存,在内存中构建成树形结构.优点:对节点操作方便,缺点:需要大量的内存空间,浪费资源 1.2 SAX形式 ...

  5. jQuery简介和基础

    一.函数变量的作用域 1.变量的作用域实在声明时决定的而不是调用执行时决定 <script> var a=6,b=7; function t() { // var a=3,b=5; con ...

  6. Hinton's paper Dynamic Routing Between Capsules 的 Tensorflow , Keras ,Pytorch实现

    Tensorflow 实现 A Tensorflow implementation of CapsNet(Capsules Net) in Hinton's paper Dynamic Routing ...

  7. 【js-xlsx和file-saver插件】前端导出数据到excel

    最近在做项目,前端进行处理数据,导出excel中,还是遇到不少问题,这里将其进行总结一下,博主是vue框架开发,借用file-saver和xlsx插件进行导出excel,我们来看下代码和效果.地址链接 ...

  8. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...

  9. Error:Cannot build Artifact :war exploded because it is included into a circular depency

    找到项目的目录 查找artifacts文件夹 删掉不是你项目名称的那个 问题出现的原因是你该项目名字了 造成tomcat发布两个网页 发布两个网页不是什么大问题 但是这两玩意地址一样 争夺资源啊冲突之 ...

  10. java客户端Jedis操作Redis Sentinel 连接池

    pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...