uniapp给照片加水印
宽高除以3是因为在图片像素太大,则可能导致图片空白。
ios手机需设置destWidth和destHeight
/**
* 选择图片
*/
chooseImage(flag) {
uni.chooseImage({
count: 8,
sourceType:['camera'], //选择图片的来源,相册或照相
success: res => {
console.log(res);
for (let i = 0; i < res.tempFilePaths.length; i++) {
this.setimg(res.tempFilePaths[i])
}
}
});
},
//获取图片信息
setimg(path){
uni.showLoading({})
let date = '这是水印文字' ;
uni.getImageInfo({
src: path,
success: res => {
console.log(res);
this.w = res.width/3 + 'px';
this.h = res.height/3 + 'px';
//初始化画布
const ctx = uni.createCanvasContext('firstCanvas', this);
ctx.fillRect(0, 0, res.width, res.height);
//将图片src放到cancas内,宽高为图片大小
ctx.drawImage(res.path, 0, 0, res.width/3, res.height/3);
ctx.setFontSize(20);
// ctx.globalAlpha = 1;
ctx.setFillStyle('#ffffff');
let textToWidth = (res.width/3) - 200;
let textToHeight = (res.height/3) - 30;
ctx.fillText(date, textToWidth, textToHeight);
// 这个不加异步 第一次的图片显示不出来
setTimeout(() => {
ctx.draw(false, () => {
setTimeout(() => {
uni.canvasToTempFilePath({
//将画布中内容转成图片,即水印与图片合成
canvasId: 'firstCanvas',
x: 0,
y: 0,
width: res.width/3,
height: res.height/3,
destWidth: res.width/3,
destHeight: res.height/3,
success: ress => {
console.log(ress)
uni.saveImageToPhotosAlbum({//保存到手机
filePath: ress.tempFilePath,
success: () => {
console.log("水印图片保存成功");
uni.hideLoading()
}
})
},
fail: (err) => {
console.log(err);
}
});
}, 500);
});
},300);
}
});
},
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)