Android给图片添加带半透明背景的水印
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给图片添加带半透明背景的水印相关推荐
- Android中为PopupWindow设置半透明背景的方案(兼容华为手机)
原文地址:https://blog.csdn.net/biaobiao1217/article/details/51438552 android中为PopupWindow设置半透明背景已经是老生常谈的 ...
- 给图片添加文字(换行)水印
Android给图片添加半透明背景的水印 (水印带有半透明底色) 给图片添加文字(换行)水印 1.绘制富文本: /** * 绘制富文本* StaticLayout可实现换行* <p>* h ...
- ThinkPHP自动化为已经上传的图片添加「 响应式」水印(数据库字段部分)
版权属于: Postbird - There I am , in the world more exciting! 原文地址: http://www.ptbird.cn/thinkphp-image- ...
- android图片上加有汉字,Android 为图片添加文字水印
先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...
- Android 为图片添加文字水印
先上图: 上代码 ------------------------MainActivity------------------------ package com.example.zhuoshi.wa ...
- android图片上水印字体颜色,Android给图片添加文字和水印
话不多说 上图 gif5新文件.gif public class ImageUtil { /** * 设置水印图片在左上角 * * @param context 上下文 * @param src * ...
- 前端页面如何为图片添加黑色半透明遮罩
在实际开发中经常会遇到对图片加一层半透明遮罩,然后上面显示文字说明的需求. 如下图: 如何实现呢?看代码! 需要把图片放到一个父容器中,为父容器设置背景色为黑色background: #000;,再为 ...
- Android ImageView图片显示点击背景切换
为什么80%的码农都做不了架构师?>>> 一.介绍 ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 二.XML属性 android:adjustV ...
- android activity设置透明或者半透明背景
1.在res/valuse/styles.xml中添加如下代码 <!--是否显示标题窗口背景 透明窗口是否透明--> <style name="NoTitleTranslu ...
- 批量给透明图片添加纯色背景<matlab>
保存了一些透明背景的表情包,在微信发送图片的时间遇到个小问题, 用电脑发送原图,在聊天界面显示图片底色是黑色, 用手机发送原图,在聊天界面显示图片底色是白色, 很难受,一开始想找个办法,使我发送的图片 ...
最新文章
- linux 线程与CPU绑定
- JEESZ架构、分布式服务:Dubbo+Zookeeper+Proxy+Restful
- c++以空格分开的输入数组_技术贴,MATLAB矩阵与数组汇总讲解
- sgu 207 Robbers
- PHP实现高并发下的秒杀功能–Laravel
- linux-新建一个centos虚拟机系统-安装全过程图示
- 设计模式(Python)-观察者模式
- 嵌套点击事件只执行第一次
- Python基础七(深浅copy以及int,str,tuple,list,dic补充)
- php redis 事务应用,redis事务有什么用
- 利用THINKPHP框架开发的自定义表单及数据字典模板
- 【数据库系统工程师复习笔记】0.考试大纲及教程目录
- 线代 [3]|从增广矩阵漫谈矩阵转置对向量在四个向量子空间内的“飞舞”(第三篇)
- java jre安装_JRE安装与配置图文教程
- 牛顿插值法,泰勒公式
- css折角的简单实现 真实项目实践
- ip 华三secondary_H3C交换机配置端口IP sub实例
- 【算法小结】Mex,SG,集合-Nim游戏模型
- c语言编程一个超市购物程序,急求一超市的销售记录C程序(各位大哥帮帮忙啊!)...
- diyer 电脑_每个DIYer应该拥有的基本工具
热门文章
- 支持团队开发的UML建模和CASE工具MagicDraw
- Macbook pro 2015 13寸丐版更换512G固态流程记录
- 工业机器人的臂部配置形式_工业机器人臂部设计注意事项
- 外壳IK防护等级测试
- 大数运算python编程实现
- APK应用程序的解包、修改、编辑、汉化、打包及应用
- php搜索功能与jquery搜索功能,JavaScript_基于jQuery实现页面搜索功能,jQuery实现页面搜索,搜索筛选 - phpStudy...
- FlashFXP 自动上传备份到指定FTP服务器的方法
- 中频逆变IGBT控制板 感应加热电源 中高频电阻焊电源逆变技术
- 深度学习常用资料整理