Android——为图片增加水印,并且保存到图库刷新
为图片增加水印我们可以通过canvas来绘制,首先我们新创建一个工具类:
object WaterMarkHelper {fun createWaterMaskBitmap(context: Activity?, src: Bitmap, watermark: String, paddingLeft: Int, paddingTop: Int): Bitmap {//底层图片宽高val width = src.widthval height = src.heightval paint = Paint()//初始化笔with(paint) {color = Color.parseColor("#ffe5e5e5")isAntiAlias = truetextSize = 24f}//测量文字宽度val textWidth = paint.measureText(watermark).toInt()//创建一个bitmapval newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)// 创建一个新的和SRC长度宽度一样的位图val canvas = Canvas(newBitmap)//将该图片作为画布,绘制开始坐标根据图片宽高决定canvas.drawBitmap(src, (canvas.width - width) / 2f,(canvas.height - height) / 2f, null)//绘制水印for (i in paddingTop..height step 150) {for (j in paddingLeft..width step 150 + textWidth) {canvas.drawText(watermark, j.toFloat(), i.toFloat(), paint)}}// 保存canvas.save()// 存储canvas.restore()return newBitmap}
调用下载图片,添加水印,并且刷新图库:
private fun downFile(bitMap: Bitmap, saveDir: String) {val fileName = Date().time.toString() + ".jpg"val file = File(saveDir)if (!file.exists()) {file.mkdir()//如果路径不存在就先创建路径}//多重File目录下再次新建File对象,否则拿到的不是文件,而是路径val picFile = File(file, fileName)try {//绘制水印val newBitmap = WaterMarkHelper.createWaterMaskBitmap(mActivity, bitMap, userName?: "", 10, 10)val fos = FileOutputStream(picFile)//通过io流的方式来压缩保存图片val isSuccess = newBitmap.compress(Bitmap.CompressFormat.JPEG, 60, fos)fos.flush()fos.close()//把文件插入到系统图库//2020/1/11 android X 弃用insertImage()方法,直接设置IS_PENDINGif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {MediaStore.Images.Media.IS_PENDING} else {MediaStore.Images.Media.insertImage(context?.contentResolver, picFile.absolutePath, fileName, null)}//保存图片后发送广播通知更新数据库val uri = Uri.fromFile(picFile)context?.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri))} catch (e: IOException) {e.printStackTrace()}}
Android——为图片增加水印,并且保存到图库刷新相关推荐
- 原生js-实现给图片增加水印
使用原生js给图片增加水印 支持自定义 [ 水印旋转角度.字体大小.字体颜色.稠密度- ] 效果图 直接上代码(含注释) HTML代码 <img src="../images/birt ...
- Android实现图片加水印,视频水印
Android实现图片加水印,视频加水印 推荐经典用例,超级简单的视频加水印,图片加水印功能. 视频加水印: Android拍视频加水印功能 图片加水印 Android轻松实现拍照加水印
- 使用PIL包给图片增加水印
今天同事认真地做了笔记发群里,然后调侃她应该加上水印,以示版权,于是小伙伴纷纷找起了图片软件,美图秀秀好像就可以.于是乎立刻想起来Python这么强大,应该可以处理,PIL(python imagin ...
- 改造Kindeditor之:自定义图片上传插件。 外加给图片增加水印效果的选择。
场景: 编辑部人士编辑文章时需要在文章中上传图片.但上传图片时需要增加是否增加水印的选择(有可能是自己公司的原创作品).所以需要改造Kindeditor . 1: 删除Kindeitor 默认的参数对 ...
- python图片加水印_怎么在照片上加水印-用Python实现给图片增加水印
背景描述 在写文章的时候,经常需要用到一些图,为了访问被别人盗图,通常的做法是给图片添加水印. 本文分享如何使用python批量给图片添加水印. 界面展示 软件的界面如下: 软件的效果如下: 功能介绍 ...
- android给图片加水印的极简实现方式
工作日志:其实这是两年前就碰到的需求,之前没有整理,也没有继续优化和实现,这次又用到这样的需求,所以记录下来,既是一种代码记录,也是一种复习bitmap和canvas的好手段,这里提供一种思路,就是将 ...
- Android给图片加水印
try { ImageView img=(ImageView) findViewById(R.id.test_img_file); //获取从本地获取的文件路径,用FileInputstream读入文 ...
- android 给图片加水印
生成水印照片类 package com.chinawit.cwandroidbase.Infrastructure.CWComponent.CWImage.WaterMark; import andr ...
- android 照片加水印,Android 实现图片加水印或logo
我们常常会遇到为图像加水印或logo的需求,一般可以通过三方库或者软件实现,但其实加水印非常简单,仅用一个函数即可实现. 实现思路,逐一计算水印和原图重叠部分的像素点的RGBA分量: float pe ...
最新文章
- matplotlib01-plot折线图、scatter散点图
- 六月第一枪:股市震荡,下一步该做什么?
- php stortime,文件存储 - Laravel 5.8 中文文档手册 - php中文网手册
- jatoolsprinter web打印控件直接打印不弹出
- ARM Linux 3.x的设备树(Device Tree)
- 中矿新生赛 H 璐神看岛屿【BFS/DFS求联通块/连通块区域在边界则此连通块无效】...
- PHP CodeBase: 判断用户是否手机访问
- 一个内存增长问题的分析和处理(二)——valgrind工具的用法
- 数组使用方法集合(建议收藏)
- xshell远程控制(连接)两个VMware同时启动的Linux操作系统
- C++ UPD广播异步发包工具
- cad卸载不干净_Mac软件卸载不干净?你可以试试AppCleaner
- Windows使用批处理文件更改指定目录下的文件名(含序号)
- iphone手机显示itunes store无法连接服务器,iPhone无法连接到iTunes Store解决方法大全...
- android app 运行时提示 应用专为旧版 Android 打造
- a different object with the same identifier value was already associated whith
- 无盘疑难杂症的处理和网络的设置(转)
- 浏览器是如何渲染页面的?
- 品西游之馒头引起的血案(上)
- 多个USB转串口设备区分方法