当前位置:首页 > 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 上。

<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 或文件。

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 上。

vue实现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实现背景轮转照片的方法 使用Vue实现背景轮转照片可以通过动态绑定样式和定时器来实现。以下是一种常见的实现方式。 创建Vue组件 在Vue组件中,定义照片数组和当前显示的索引。通过v-bind…

vue实现视频去除水印

vue实现视频去除水印

去除视频水印的常见方法 去除视频水印可以通过多种技术手段实现,以下是一些常见的方法及其在Vue中的实现思路。 使用CSS覆盖水印 通过CSS定位覆盖水印区域,适用于水印位置固定的场景。在Vue中可以…

vue实现canvas照片水印

vue实现canvas照片水印

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

react模态框如何加水印

react模态框如何加水印

添加水印的基本方法 在React模态框中添加水印可以通过CSS背景或Canvas绘制实现。CSS方法简单高效,适合静态水印;Canvas则支持动态内容和复杂效果。 // CSS背景水印示例 .mod…

如何实现一个react水印组件

如何实现一个react水印组件

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

css制作水印

css制作水印

使用CSS制作水印 通过CSS可以轻松为网页或图片添加水印效果,以下是几种常见方法: 使用伪元素添加文字水印 通过::after或::before伪元素在目标元素上叠加半透明文字: .waterm…