当前位置:首页 > VUE

vue实现canvas照片水印

2026-02-23 11:12:52VUE

使用 Vue 实现 Canvas 照片水印

准备工作

确保项目中已安装 Vue,创建一个 Vue 组件用于处理图片和水印。需要准备一张图片和一个水印文字或图片。

创建 Canvas 画布

在 Vue 组件的模板中添加一个 canvas 元素,用于绘制图片和水印。

<template>
  <div>
    <canvas ref="canvas" width="800" height="600"></canvas>
  </div>
</template>

加载图片和水印

在组件的 mounted 钩子中加载图片和水印图片(如果有),并绘制到 Canvas 上。

vue实现canvas照片水印

<script>
export default {
  mounted() {
    const canvas = this.$refs.canvas;
    const ctx = canvas.getContext('2d');
    const img = new Image();
    const watermarkText = 'Watermark';

    img.onload = () => {
      // 绘制原始图片
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

      // 设置水印样式
      ctx.font = '30px Arial';
      ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';

      // 绘制水印文字
      ctx.fillText(watermarkText, canvas.width / 2, canvas.height / 2);
    };

    img.src = 'path/to/your/image.jpg';
  }
};
</script>

动态调整水印

如果需要动态调整水印的位置、透明度或大小,可以通过计算属性或方法实现。

methods: {
  drawWatermark(ctx, text, opacity, size) {
    ctx.font = `${size}px Arial`;
    ctx.fillStyle = `rgba(255, 255, 255, ${opacity})`;
    ctx.fillText(text, this.$refs.canvas.width / 2, this.$refs.canvas.height / 2);
  }
}

保存带水印的图片

使用 Canvas 的 toDataURL 方法将带水印的图片导出为 Base64 或文件。

vue实现canvas照片水印

saveImage() {
  const canvas = this.$refs.canvas;
  const dataURL = canvas.toDataURL('image/png');
  const link = document.createElement('a');
  link.href = dataURL;
  link.download = 'watermarked-image.png';
  link.click();
}

响应式调整

监听窗口大小变化或图片尺寸变化,动态调整 Canvas 大小和水印位置。

window.addEventListener('resize', this.adjustCanvasSize);

adjustCanvasSize() {
  const canvas = this.$refs.canvas;
  canvas.width = window.innerWidth * 0.8;
  canvas.height = window.innerHeight * 0.8;
  this.redrawImageAndWatermark();
}

使用图片作为水印

如果水印是图片而非文字,加载水印图片并绘制到 Canvas 上。

const watermarkImg = new Image();
watermarkImg.onload = () => {
  ctx.drawImage(
    watermarkImg,
    canvas.width - watermarkImg.width - 20,
    canvas.height - watermarkImg.height - 20,
    watermarkImg.width,
    watermarkImg.height
  );
};
watermarkImg.src = 'path/to/watermark.png';

通过以上步骤,可以在 Vue 中实现 Canvas 照片水印功能,支持文字或图片水印,并能动态调整和保存。

标签: 水印照片
分享给朋友:

相关文章

vue实现水印效果

vue实现水印效果

实现水印效果的几种方法 在Vue中实现水印效果可以通过多种方式,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性可以实现简单的水印效果。定义一个包含水印文本…

vue实现canvas照片水印

vue实现canvas照片水印

实现思路 在Vue中实现Canvas照片水印,核心是通过Canvas API绘制图片和水印文字,最终导出为新的图片。主要分为加载图片、绘制水印、导出结果三个关键步骤。 基础实现代码 以下是一个完整…

如何实现一个react水印组件

如何实现一个react水印组件

实现React水印组件的方法 使用Canvas绘制水印 通过Canvas动态生成水印图案,可以灵活控制水印的样式和位置。 import React, { useEffect, useRef…

react实现照片上传

react实现照片上传

实现照片上传的基本步骤 在React中实现照片上传功能通常涉及前端表单处理、文件选择、预览以及后端API交互。以下是具体实现方法: 创建文件上传表单组件 使用HTML的<input type=…

php实现水印

php实现水印

添加水印的基本方法 使用 PHP 的 GD 库或 Imagick 扩展可以为图片添加水印。GD 库是 PHP 默认支持的图像处理库,而 Imagick 提供了更强大的功能。 使用 GD 库添加文…

js 实现水印

js 实现水印

实现水印的基本方法 在JavaScript中实现水印可以通过Canvas绘制或CSS样式叠加。以下是两种常见方法: Canvas绘制方法 创建Canvas元素并绘制文字或图片水印,将Canvas转为…