Android给图片添加带半透明背景的水印:

效果图:

  • 给图片添加多条水印(通过layout文件实现)
  • 水印带有半透明底色,水印宽度和图片宽度一致;
  • 每条水印 都有自己固定的位置;

关键点:将TextView转换成bitmap,将水印bitmap绘制在原图上。

源码如下:

水印样式文件:layout_water_mark.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tv_mark"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#60000000"android:paddingHorizontal="12dp"android:paddingVertical="7dp"android:text="@string/app_name"android:textColor="@color/white"android:textSize="12sp" />

工具类:PictureUtil.java

package com.kedacom.convenientshoot.utils;import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.View;
import android.widget.TextView;public class PictureUtil {/*** 图片加水印** @param src* @param mark1* @param mark2* @param paddingLeft* @param paddingTop* @return*/public static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap mark1, Bitmap mark2, int paddingLeft, int paddingTop) {if (src == null) {return null;}int width = src.getWidth();int height = src.getHeight();//创建一个bitmapBitmap newb = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图//将该图片作为画布Canvas canvas = new Canvas(newb);//在画布 0,0坐标上开始绘制原始图片canvas.drawBitmap(src, 0, 0, null);//在画布上绘制水印图片canvas.drawBitmap(mark1, paddingLeft, paddingTop, null);//左上方canvas.drawBitmap(mark2, paddingLeft, src.getHeight() - mark2.getHeight(), null);//左下方// 保存canvas.save();// 存储canvas.restore();return newb;}/*** TextView 转换成Bitmap* @param tv* @return*/public static Bitmap buildTextViewBitmap(TextView tv) {tv.setDrawingCacheEnabled(true);tv.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());Bitmap bitmap = Bitmap.createBitmap(tv.getDrawingCache());tv.destroyDrawingCache();return bitmap;}
}

方法调用:

    private Bitmap getWatermarkBitmap(String compressFile) {LayoutInflater inflater = LayoutInflater.from(AppUtil.getApp());TextView tv1 = (TextView) inflater.inflate(R.layout.layout_water_mark, null);TextView tv2 = (TextView) inflater.inflate(R.layout.layout_water_mark, null);Bitmap src = BitmapFactory.decodeFile(compressFile);//原图tv1.setText("2022.03.10 09:00:00");//时间tv1.setWidth(src.getWidth());//水印和图片宽度一致tv2.setText("河北省安阳市金山屯区宝山路32号真新六街坊");//地点tv2.setWidth(src.getWidth());Bitmap watermarkBitmap = PictureUtil.createWaterMaskBitmap(src, PictureUtil.buildTextViewBitmap(tv1), PictureUtil.buildTextViewBitmap(tv2), 0, 0);//水印图片return watermarkBitmap;}

android 给图片添加文字(换行)水印 (普通水印)

Android给图片添加带半透明背景的水印相关推荐

  1. Android中为PopupWindow设置半透明背景的方案(兼容华为手机)

    原文地址:https://blog.csdn.net/biaobiao1217/article/details/51438552 android中为PopupWindow设置半透明背景已经是老生常谈的 ...

  2. 给图片添加文字(换行)水印

    Android给图片添加半透明背景的水印 (水印带有半透明底色) 给图片添加文字(换行)水印 1.绘制富文本: /** * 绘制富文本* StaticLayout可实现换行* <p>* h ...

  3. ThinkPHP自动化为已经上传的图片添加「 响应式」水印(数据库字段部分)

    版权属于: Postbird - There I am , in the world more exciting! 原文地址: http://www.ptbird.cn/thinkphp-image- ...

  4. android图片上加有汉字,Android 为图片添加文字水印

    先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...

  5. Android 为图片添加文字水印

    先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...

  6. android图片上水印字体颜色,Android给图片添加文字和水印

    话不多说 上图 gif5新文件.gif public class ImageUtil { /** * 设置水印图片在左上角 * * @param context 上下文 * @param src * ...

  7. 前端页面如何为图片添加黑色半透明遮罩

    在实际开发中经常会遇到对图片加一层半透明遮罩,然后上面显示文字说明的需求. 如下图: 如何实现呢?看代码! 需要把图片放到一个父容器中,为父容器设置背景色为黑色background: #000;,再为 ...

  8. Android ImageView图片显示点击背景切换

    为什么80%的码农都做不了架构师?>>>    一.介绍 ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 二.XML属性 android:adjustV ...

  9. android activity设置透明或者半透明背景

    1.在res/valuse/styles.xml中添加如下代码 <!--是否显示标题窗口背景 透明窗口是否透明--> <style name="NoTitleTranslu ...

  10. 批量给透明图片添加纯色背景<matlab>

    保存了一些透明背景的表情包,在微信发送图片的时间遇到个小问题, 用电脑发送原图,在聊天界面显示图片底色是黑色, 用手机发送原图,在聊天界面显示图片底色是白色, 很难受,一开始想找个办法,使我发送的图片 ...

最新文章

  1. linux 线程与CPU绑定
  2. JEESZ架构、分布式服务:Dubbo+Zookeeper+Proxy+Restful
  3. c++以空格分开的输入数组_技术贴,MATLAB矩阵与数组汇总讲解
  4. sgu 207 Robbers
  5. PHP实现高并发下的秒杀功能–Laravel
  6. linux-新建一个centos虚拟机系统-安装全过程图示
  7. 设计模式(Python)-观察者模式
  8. 嵌套点击事件只执行第一次
  9. Python基础七(深浅copy以及int,str,tuple,list,dic补充)
  10. php redis 事务应用,redis事务有什么用
  11. 利用THINKPHP框架开发的自定义表单及数据字典模板
  12. 【数据库系统工程师复习笔记】0.考试大纲及教程目录
  13. 线代 [3]|从增广矩阵漫谈矩阵转置对向量在四个向量子空间内的“飞舞”(第三篇)
  14. java jre安装_JRE安装与配置图文教程
  15. 牛顿插值法,泰勒公式
  16. css折角的简单实现 真实项目实践
  17. ip 华三secondary_H3C交换机配置端口IP sub实例
  18. 【算法小结】Mex,SG,集合-Nim游戏模型
  19. c语言编程一个超市购物程序,急求一超市的销售记录C程序(各位大哥帮帮忙啊!)...
  20. diyer 电脑_每个DIYer应该拥有的基本工具

热门文章

  1. 支持团队开发的UML建模和CASE工具MagicDraw
  2. Macbook pro 2015 13寸丐版更换512G固态流程记录
  3. 工业机器人的臂部配置形式_工业机器人臂部设计注意事项
  4. 外壳IK防护等级测试
  5. 大数运算python编程实现
  6. APK应用程序的解包、修改、编辑、汉化、打包及应用
  7. php搜索功能与jquery搜索功能,JavaScript_基于jQuery实现页面搜索功能,jQuery实现页面搜索,搜索筛选 - phpStudy...
  8. FlashFXP 自动上传备份到指定FTP服务器的方法
  9. 中频逆变IGBT控制板 感应加热电源 中高频电阻焊电源逆变技术
  10. 深度学习常用资料整理