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);

  }

});

},

posted @   小韓烟柳  阅读(1251)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示