Android——为图片增加水印,并且保存到图库刷新
16lz
2021-01-25
为图片增加水印我们可以通过canvas来绘制,首先我们新创建一个工具类:
object WaterMarkHelper { fun createWaterMaskBitmap(context: Activity?, src: Bitmap, watermark: String, paddingLeft: Int, paddingTop: Int): Bitmap { //底层图片宽高 val width = src.width val height = src.height val paint = Paint() //初始化笔 with(paint) { color = Color.parseColor("#ffe5e5e5") isAntiAlias = true textSize = 24f } //测量文字宽度 val textWidth = paint.measureText(watermark).toInt() //创建一个bitmap val 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_PENDING if (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 ImageView 图片宽度全屏,高度自适应的写法
- android客户端连接人人网之二----获取朋友信息
- 【转】Android有效解决加载大图片时内存溢出的问题
- Android(安卓)Input设备debug技巧
- android 使用 ffmpeg 进行视频转码(一)
- Android手机拍照(Android学习随笔九)
- 图片处理
- 【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveI
- android中的hdpi,ldpi,mdpi