博客
关于我
Android - 利用扩展函数为Bitmap添加文字水印
阅读量:401 次
发布时间:2019-03-05

本文共 1394 字,大约阅读时间需要 4 分钟。

异空间项目技术分享:为Bitmap添加文字水印

在现代应用开发中,对图片进行版权标记或信息添加已成为常见需求。文字水印是一种简单有效的方式,不仅可以保护图片的版权,还能为用户提供额外的信息(例如视频缩略图)。本文将介绍如何为Bitmap添加文字水印,并探讨如何解决Bitmap在ImageView中的显示问题。

添加文字水印的方法

在进行水印绘制之前,首先需要对Bitmap进行适当的缩放处理。直接在未缩放的Bitmap上绘制水印可能导致水印在缩放过程中被拉伸或压缩,影响最终效果。建议先将Bitmap缩放到目标大小,再进行文字绘制。

以下是使用Kotlin编写的示例代码:

bitmap?.let {    // 缩放Bitmap至目标尺寸    val scaledBitmap = Bitmap.createScaledBitmap(        it.width.toFloat(),        it.height.toFloat(),        Bitmap.Config.ARGB_8888    ).addTextWatermark(        content = "用户名",        textSize = 14,        color = Color.WHITE,        x = (it.width - bounds.width) - 10f,        y = (it.height - bounds.height) + 10f,        recycle = false    )}

addTextWatermark是我们为Bitmap类扩展的一个方法,支持如下参数:

  • content:水印文本
  • textSize:文字大小(单位:px)
  • color:文字颜色
  • x:起始坐标X
  • y:起始坐标Y
  • recycle:是否回收内存

默认情况下,水印会在Bitmap的右下角绘制。如果需要定制位置,可以通过调整X和Y坐标进行调整。

解决图片显示问题

在Android开发中,ImageView加载Bitmap时,会根据设置的缩放方式(scaleType)对图片进行调整。不同缩放方式会导致图片在ImageView中的显示效果不同。以下是几种常见的缩放方式及其特点:

  • matrix:保持原图大小,从左上角开始绘制
  • fitXY:将图片水平方向拉伸至ImageView宽度
  • fitStart:沿左上角点按比例缩放
  • fitCenter:沿上方居中点按比例缩放
  • fitEnd:沿下方居中点按比例缩放
  • Center:以ImageView和图片的中心点为基准
  • centerCrop:以中心点为基准,裁剪至ImageView大小
  • centerInside:显示完整图片,缩放至ImageView大小

选择合适的缩放方式可以根据具体需求优化图片显示效果。例如,在需要保持图片原比例并展示完整时,可以选择centerInsidematrix方式。

通过合理设置scaleType,可以有效避免图片在ImageView中出现比例失调或部分被截断的情况。

总结

在本文中,我们探讨了为Bitmap添加文字水印的方法,并分析了ImageView中图片显示问题的解决方案。通过合理设置缩放方式,可以更好地控制图片的显示效果。希望以上内容能为开发者提供有价值的参考!

转载地址:http://uymzz.baihongyu.com/

你可能感兴趣的文章
opencv Hog Demo
查看>>
opencv Hog学习总结
查看>>
opencv Mat push_back
查看>>
opencv putText中文乱码
查看>>
OpenCV Python围绕特定点将图像旋转X度
查看>>
opencv resize
查看>>
Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
查看>>
opencv SVM分类Demo
查看>>
OpenCV VideoCapture.get()参数详解
查看>>
opencv videocapture读取视频cap.isOpened 输出总是false
查看>>
opencv waitKey() 函数理解及应用
查看>>
OpenCV 中的图像转换
查看>>
OpenCV 人脸识别 C++实例代码
查看>>
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
查看>>
opencv&Python——多种边缘检测
查看>>
opencv&python——高通滤波器和低通滤波器
查看>>
OpenCV+Python识别车牌和字符分割的实现
查看>>