android图片重绘添加简单水印(日期等)

写在文前:作为一只android小白,第一次鼓起勇气写博客,如果有错误和表述不对的地方,希望大家不吝指出,万分感谢!如文章有雷同,纯属巧合。

android中对于图片经常会重绘,添加一些水印,比如文字或者日期等。那么具体是怎么实现的呢?

首先,我们需要知道水印绘制的具体位置,就需要得到图片宽高,而android中的bitmap类就给我们提供了这个方法:

int width = bitmap.getWidth();
int hight = bitmap.getHeight();
Bitmap imgTemp = Bitmap.createBitmap(width, hight,Bitmap.Config.ARGB_8888);
得到了图片的宽高我们就需要创建画笔和画布,用于绘制,并对图片做一些简单处理:

Canvas canvas = new Canvas(imgTemp);// 初始化画布绘制的图像到icon上
Paint photoPaint = new Paint(); // 建立画笔
photoPaint.setDither(true); // 获取更清晰的图像采样
photoPaint.setFilterBitmap(true);// 过滤一些
然后我们就需要绘制矩形,并对画笔做一些简单的设置:

Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());// 创建一个指定的新矩形的坐标
Rect dst = new Rect(0, 0, width, hight);// 创建一个指定的新矩形的坐标
canvas.drawBitmap(bitmap, src, dst, photoPaint);// 将photo 缩放或则扩大到										dst使用的填充区photoPaint
Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG| Paint.DEV_KERN_TEXT_FLAG);// 设置画笔
textPaint.setTextSize(35.0f);// 字体大小
textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默认的宽度
textPaint.setColor(Color.GREEN);// 采用的颜色
(设置画笔可以设置更多属性,看自己喜好)
之后我们就可以开始绘制文字了(这里我就绘制当前日期了):

canvas.drawText(String.valueOf("照片日期:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new java.util.Date(System.currentTimeMillis()))), 20, 65,textPaint);// 绘制上去字,开始未知x,y采用那只笔绘制
最后我们只需要使用画布给图片加水印就可以了:

canvas.drawBitmap(bitmap, bitmap.getWidth() - 5, 5, textPaint);// 在src的右下角画入水印
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
这样一个简单的水印就完成了,希望对大家有帮助。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在Android中将多行水印文字添加图片的左下角,可以使用Canvas和Paint类。以下是一个示例代码: ``` Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas(mutableBitmap); Paint paint = new Paint(); paint.setColor(Color.RED); paint.setTextSize(50); String watermarkText = "This is a multi-line watermark text\nwith two lines"; String[] lines = watermarkText.split("\n"); int y = mutableBitmap.getHeight() - (lines.length * (int) paint.getTextSize()) - 50; for (String line : lines) { canvas.drawText(line, 50, y, paint); y += paint.descent() - paint.ascent(); } imageView.setImageBitmap(mutableBitmap); ``` 在这个示例中,我们首先将要添加水印文字的图片加载到Bitmap中,然后创建一个可变的Bitmap,以便我们可以在其上绘制水印。接下来,我们创建一个Canvas对象,该对象将用于在Bitmap上绘制。我们还创建了一个Paint对象,该对象定义了水印文字的颜色和大小。 我们将水印文字存储在一个字符串中,并使用split()函数将其拆分为多行。我们使用一个循环来绘制每一行水印文字。我们使用y变量来控制每一行文字的位置,这里的y值计算方式为:图片高度减去水印文字高度再减去一些间距,以便水印文字不会完全靠近底部。我们使用drawText()函数在Canvas上绘制文字,并使用y变量来控制每一行文字的位置。最后,我们将修改后的Bitmap设置为ImageView的图像。 注意,在这个示例中我们默认水印文字是从左下角开始绘制的,如果需要从右下角开始绘制,可以将x值修改为mutableBitmap.getWidth() - textWidth - 50,其中textWidth为水印文字的宽度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值