在整张图片上添加水印,多行水印,平铺多组水印,每组包含任意条数。倾斜角度、行间距、组间距可以任意修改。 效果图: 代码: public static Bitmap addMultiLinesWatermark(Cont
在整张图片上添加水印,多行水印,平铺多组水印,每组包含任意条数。倾斜角度、行间距、组间距可以任意修改。
效果图:
代码:
public static Bitmap addMultiLinesWatermark(Context context, Bitmap bitmap, List labels,
int size, int color) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap.Config bitmapConfig = bitmap.getConfig();
if (bitmapConfig == null) {
bitmapConfig = Bitmap.Config.ARGB_8888;
}
bitmap = bitmap.copy(bitmapConfig, true);
canvas canvas = new Canvas(bitmap);
// 画背景图
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.rotate(-35);//旋转45度
//创建画笔
TextPaint mPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
// mPaint.setTextSkewX(-0.25f);//文字倾斜
mPaint.setColor(color);
mPaint.setTextSize(dp2px(context, size));
mPaint.setDither(true); // 获取跟清晰的图像采样
mPaint.setFilterBitmap(true);// 过滤一些
// 抗锯齿
mPaint.setAntiAlias(true);
float textWidth = mPaint.measureText(labels.get(0));
int index = 0;
int textSpace = 50;//多行文本间距
int verticalSpace = 120;//Y轴间距
for (int positionY = height / 10; positionY <= height; positionY += height / 10 + verticalSpace) {
float fromX = -width + (index++ % 2) * textWidth;
for (float positionX = fromX; positionX < width; positionX += textWidth * 3) {
int spacing = 0;//间距
for (String label : labels) {
canvas.drawText(label, positionX, positionY + spacing, mPaint);
spacing = spacing + textSpace;
}
}
}
//保存所有元素
canvas.save();
canvas.restore();
return bitmap;
}
--结束END--
本文标题: Android 给图片平铺多组水印
本文链接: https://www.lsjlt.com/news/29593.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0