js实现为base64图片添加文字水印和图片水印

  • 使用以下函数添加水印后可以点击链接查看base64位图片,将结果复制后查看效果
let file='data:image/png;base64,XXXXXXXXXXXXXXXXX';  //测试时请换成真正的base64位图片
let result1=fillTextToImg(file);    //添加文字水印
console.log(result1);
let result2=fillImgToImg(file); 	//添加图片水印
console.log(result2);
/**
 * 为base64位图片添加文字水印
 */
function fillTextToImg(base64){
  const img = new Image();
  img.src = base64;
  img.setAttribute("crossOrigin", "Anonymous");
  return new Promise((resolve, reject) => {
    img.onload = () => {
      const canvas = document.createElement("canvas");
      const ctx = canvas.getContext("2d");
      canvas.width = img.width;
      canvas.height = img.height;
      ctx.fillRect(0, 0, canvas.width, canvas.height);
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
      const remFontSize = canvas.width / 20;
      ctx.font = remFontSize + "px";
      ctx.textAlign = "left";
      ctx.fillStyle = "#ffffff";
      const name='@江西南昌'; //添加的文字水印内容
      const spaceH = remFontSize * 0.3;
      ctx.fillText(name,20, canvas.height - remFontSize - spaceH);
      resolve(canvas.toDataURL("image/jpg"));
    };
  });
}

/**
*将图片转换为base64
*/
async function getImgBase64(url,width=50){
  const img = new Image();
  img.src = url;
  img.setAttribute("crossOrigin", "Anonymous");
  return new Promise((resolve, reject) => {
    img.onload = () => {
      const canvas = document.createElement("canvas");
      const ctx = canvas.getContext("2d");
      canvas.width = width;
      canvas.height = (img.height * width) / img.width;
      ctx.fillRect(0, 0, canvas.width, canvas.height);
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
      resolve(canvas.toDataURL("image/jpeg"));
    };
  });
}

/**
*为base64位图片添加图片水印,waterMark为水印图片
*/
function fillImgToImg(base64,waterMark){
 waterMark ="https://img2.baidu.com/it/u=2243573419,589412055&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1684861200&t=7bf0a17ca21ae8ec8aa77b0f98cb4c7e";
  const img = new Image();
  img.src = base64;
  img.setAttribute("crossOrigin", "Anonymous");
  return new Promise((resolve, reject) => {
    img.onload = async () => {
      const canvas = document.createElement("canvas");
      const ctx = canvas.getContext("2d");
      canvas.width = img.width;
      canvas.height = img.height;
      ctx.fillRect(0, 0, canvas.width, canvas.height);
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
      const waterMarkSrc = await getImgBase64(waterMark, 100);
      const waterMarkImg = new Image();
      waterMarkImg.src = waterMarkSrc;
      waterMarkImg.setAttribute("crossOrigin", "Anonymous");
      waterMarkImg.onload = () => {
        ctx.drawImage(
            waterMarkImg,
            canvas.width / 2 - waterMarkImg.width / 2,
            canvas.height - waterMarkImg.height - 10,
            waterMarkImg.width,
            waterMarkImg.height
        );
        resolve(canvas.toDataURL("image/jpeg"));
      };
    };
  });
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
您可以使用Canvas来给Base64图片添加水印。以下是一个示例代码: ```javascript // 创建一个临时的Canvas元素 var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); // 创建一个新的Image对象 var image = new Image(); // 加载Base64图片 image.onload = function() { // 设置Canvas尺寸与图片尺寸一致 canvas.width = image.width; canvas.height = image.height; // 在Canvas上绘制图片 context.drawImage(image, 0, 0); // 添加水印文本 context.font = '20px Arial'; context.fillStyle = 'rgba(255, 0, 0, 0.5)'; context.fillText('Watermark', 10, 50); // 获取添加水印后的Base64图片 var watermarkedBase64 = canvas.toDataURL(); // 在页面上显示添加水印后的图片 var resultImage = document.createElement('img'); resultImage.src = watermarkedBase64; document.body.appendChild(resultImage); }; // 设置Base64图片源 image.src = 'data:image/png;base64,iVBORw0KG...'; // 替换为您的Base64图片数据 ``` 在上述示例中,我们首先创建了一个临时的Canvas元素,并从Base64图片创建一个新的Image对象。当图片加载完成后,我们将Canvas的尺寸设置为与图片尺寸一致,并使用`context.drawImage()`方法将图片绘制到Canvas上。 然后,我们使用`context.fillText()`方法在Canvas上添加水印文本。可以通过调整字体、颜色、位置等参数来自定义水印样式。 最后,通过调用Canvas的`toDataURL()`方法,可以获取添加水印后的Base64图片数据。您可以将其用于保存到服务器或显示在页面上。 请注意,由于浏览器的安全策略限制,如果您在尝试处理来自不同域的Base64图片时遇到问题,您可能需要进行跨域处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值