图片水印

文字/图片/平铺/透明度

434 次访问

图片加水印

💧
拖入 / 点击选择 / 粘贴(Ctrl+V)图片
支持多选 · JPG / PNG / WebP · 浏览器本地处理 · 不上传服务器
同款水印将应用于全部图片 · 单图也可即时调整

使用提示

多图层:「+ 文字水印」「+ 图片水印」可叠加任意多层,每层独立配置位置 / 透明 / 旋转 / 平铺
拖拽定位:选中图层后,直接在画布上鼠标拖动微调;X/Y 偏移会同步更新
平铺水印:勾选后水印铺满整图,是防盗图 / 截图最强的保护(如商品图防搬运)
描边:白色文字在浅色背景看不清时,加 1-3px 黑色描边可大幅提升可读性
EXIF 日期:选「EXIF 日期」预设可自动读取图片拍摄时间作为水印(仅 JPG 含 EXIF 的图片有效)
批量:拖入多图后点「批量加水印 · 全部下载」一次处理并打包 ZIP(≥2 张时)
粘贴:截图后按 Ctrl+V(Mac ⌘+V)可直接粘贴到工具
本地处理:所有水印添加在浏览器完成,图片不会上传服务器

关于本工具

了解工具定位 · 使用场景 · 对比优势

给图片批量添加文字或图片水印,支持自定义透明度、平铺位置和旋转角度。自媒体博主批量保护原创图、电商运营给产品图打品牌标识、设计师快速输出带版权水印的样稿,无需安装软件。所有处理在浏览器本地完成,图片不上传服务器。

使用场景

📸

摄影作品防盗

独立摄影师在社交平台发布样片时,常被无授权搬运。本工具支持上传透明背景的签名图片(如个人 Logo),以 30% 透明度平铺至整张照片,既不影响画面观感,又让盗图者难以裁切或覆盖。一张照片处理仅需 3 秒,批量导出时自动保留 EXIF 信息。

🏢

企业文档水印

公司内部的设计稿、报价单在微信传输过程中易被截图外泄。本工具可批量导入 PDF 或图片,用固定文字(如「内部资料·不可外传」)沿对角线平铺,透明度设为 15%,确保阅读不受干扰,但截图后水印清晰可辨。无需上传服务器,文件全程在本地处理。

🎨

电商商品主图

淘宝店主在详情页展示实物图时,担心被同行直接扒图使用。本工具支持在图片右下角叠加店铺名称(文字水印),字体、字号、颜色可自定义,与背景形成对比。平铺模式还可用于全图覆盖,防止截图后裁掉角落水印。单张处理速度 < 1 秒,适合批量上新。

📚

课件版权保护

教师将 PPT 转成图片发给学生复习时,常被二次传播到公开平台。本工具可在每页课件底部叠加「仅供本班学习」文字,透明度调至 20%,不影响阅读。支持一次导入 20 页 PDF,自动识别页面尺寸并保持水印位置统一,全程离线处理,不泄露学生信息。

🖼️

素材预览防滥用

设计师向客户发送素材预览图时,需防止对方直接商用。本工具可将一张「预览专用」图片以 50% 透明度平铺至整张素材,客户能看清构图和色彩,但无法直接用于成品。支持自定义平铺间距和角度,避免水印被局部修复工具擦除。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具Watermarkly(竞品 A)Photoshop(传统方法)
数据隐私纯浏览器处理,图片不上传服务器上传图片至服务器处理本地处理,依赖本地软件
处理速度1-3 秒(取决于图片大小)5-15 秒(含上传下载时间)30 秒 - 数分钟(需手动操作)
离线可用支持,完全离线运行不支持,需联网支持,需安装软件
批量处理支持,一次上传多张支持,付费版批量支持,需录制动作或脚本
收费模式免费免费版有水印限制,Pro 版 $9.99/月一次性购买 $22.99/月(摄影计划)
水印样式文字、图片、平铺、透明度调节文字、图片、平铺、位置、旋转文字、图片、图层样式(需手动配置)
操作门槛打开即用,无学习成本界面简洁,需简单熟悉学习曲线陡峭,需掌握图层概念

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传或拖入 JPG/PNG 图片,支持单张或多张同时处理
  2. 选择水印类型:文字水印(输入自定义文本)或图片水印(上传 PNG 图标)
  3. 调整水印位置(九宫格点击)、透明度(0-100 滑块)及平铺模式(单次/平铺覆盖)
  4. 点击「预览」查看水印效果,确认无误后点击「下载」保存单张图片

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
文字水印:'© 2025 示例',位置:右下角,透明度:50%,字体大小:24px原图右下角叠加半透明文字 '© 2025 示例',字体大小 24px,透明度 50%典型场景:版权声明水印
图片水印:logo.png(200x200),位置:平铺,透明度:30%原图全幅平铺 logo.png,每块间距 50px,透明度 30%典型场景:全图防盗平铺水印
文字水印:'测试',位置:左上角,透明度:100%,字体大小:72px原图左上角叠加不透明文字 '测试',字体大小 72px,完全覆盖下方内容边界 case:100% 透明度(完全不透明)
图片水印:logo.png(200x200),位置:居中,透明度:0%原图居中叠加完全透明 logo.png,肉眼不可见边界 case:0% 透明度(完全透明,无视觉影响)
文字水印:'A',位置:右下角,透明度:50%,字体大小:1px原图右下角叠加极小文字 'A',字体大小 1px,几乎不可辨识边界 case:最小字体大小 1px
图片水印:logo.png(200x200),位置:左上角,透明度:50%,平铺间距:0px原图左上角开始平铺 logo.png,间距 0px,形成无缝拼接图案易错 case:平铺间距为 0 时图案连续
文字水印:'测试',位置:右上角,透明度:50%,字体大小:0px提示错误:字体大小必须大于 0易错 case:字体大小输入 0 或负数

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 水印文字用全角标点导致渲染异常

错误
水印内容:版权所有©2024
修复
水印内容:版权所有 (C) 2024

部分浏览器 Canvas 渲染全角标点(如©、®、℃)时字体 fallback 不一致,导致字符显示为方块或乱码。建议用半角替代符号或 Unicode 转义。

2. 图片水印用透明 PNG 但未处理背景

错误
上传一张带白色背景的 PNG 作为水印
修复
上传一张透明背景的 PNG(如 logo 去底后导出为 PNG-24)

工具不会自动抠图;如果 PNG 有白色背景,叠加后白色会覆盖原图内容。需要用户自行准备透明底图片。

3. 平铺模式间距设为零导致重叠

错误
平铺间距:0px
修复
平铺间距:50px(或水印尺寸的 1.5 倍)

间距为 0 时水印紧贴排列,视觉上变成一整块纹理,失去防伪效果。建议间距至少为水印尺寸的 50%。

4. 透明度设 100% 等于没加水印

错误
水印透明度:100%
修复
水印透明度:30%-50%

透明度 100% 表示完全不透明,水印会完全遮挡下方原图内容;透明度 0% 表示完全透明。常见有效范围是 20%-60%。

5. 文字水印用超长字符串导致界面卡顿

错误
水印文字:这是一段长达 500 字的版权声明……
修复
水印文字:© 2024 Company Name

Canvas 渲染超长文本(>200 字)时浏览器会逐字测量宽度,导致界面冻结数秒。建议水印文字控制在 50 字以内。

6. 上传超大图片后直接下载原图大小

错误
上传一张 8000×6000px 的 RAW 格式照片
修复
上传前将图片缩放到 4000px 以内(或使用 JPEG 格式)

工具在浏览器端处理,超大图片(>5000px)会耗尽内存导致标签页崩溃。建议先压缩到常用尺寸再上传。

7. 图片水印误用了 JPG 格式

错误
上传一个 .jpg 文件作为水印图片
修复
上传 .png 或 .webp 格式(带透明通道)

JPG 不支持透明通道,叠加后水印区域会显示白色或黑色背景块。只有 PNG/WebP 支持 alpha 通道实现半透明叠加。

8. 文字水印颜色与背景完全相同

错误
水印颜色:#FFFFFF(白色),原图背景也是白色
修复
水印颜色:#000000(黑色)或与原图背景色差 ≥ 30% 的对比色

颜色相同会导致水印完全不可见。建议用取色器先查看原图主色调,选择互补色或深色系。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

O = I × (1 - α) + W × α

变量说明

  • O — 输出像素的最终颜色值
  • I — 原始图像对应像素的颜色值
  • α — 水印透明度(0~1 之间)
  • W — 水印图像对应像素的颜色值

示例

原始图像某像素 RGB=(200,150,100),水印像素 RGB=(50,50,50),透明度 α=0.3。则 R 通道:200×(1-0.3)+50×0.3=140+15=155;G 通道:150×0.7+50×0.3=105+15=120;B 通道:100×0.7+50×0.3=70+15=85。最终输出像素 RGB=(155,120,85)。

适用范围

适用于逐像素 Alpha 混合(标准图像合成公式)。不适用于非 RGB 色彩空间(如 CMYK)或带 Gamma 校正的线性混合场景。来源:Porter & Duff 1984 年《Compositing Digital Images》论文。

原理图

上传原图选择水印样式浏览器内合成Canvas 绘制平铺 / 透明度预览 & 下载PNG / JPEG文字水印自定义字体 / 颜色图片水印上传 Logo / 图标全程在浏览器本地完成,不上传任何图片到服务器隐私安全 · 离线可用 · 无需等待
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

from PIL import Image, ImageDraw, ImageFont

# 文字水印:平铺 + 透明度
img = Image.open('input.jpg').convert('RGBA')
overlay = Image.new('RGBA', img.size, (0, 0, 0, 0))
draw = ImageDraw.Draw(overlay)
font = ImageFont.truetype('arial.ttf', 36)

# 半透明灰色文字
text = 'Watermark'
fill = (128, 128, 128, 60)  # RGBA,A=60/255

# 平铺:每 200px 重复
for y in range(0, img.height, 200):
    for x in range(0, img.width, 200):
        draw.text((x, y), text, font=font, fill=fill)

result = Image.alpha_composite(img, overlay)
result.save('output.png')
package main

import (
	"image"
	"image/color"
	"image/draw"
	"image/jpeg"
	"image/png"
	"log"
	"os"
	"golang.org/x/image/font"
	"golang.org/x/image/font/basicfont"
	"golang.org/x/image/math/fixed"
)

func main() {
	src, err := os.Open("input.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer src.Close()

	img, _, err := image.Decode(src)
	if err != nil {
		log.Fatal(err)
	}

	// 创建半透明覆盖层
	overlay := image.NewRGBA(img.Bounds())
	draw.Draw(overlay, overlay.Bounds(), img, image.Point{}, draw.Src)

	// 平铺文字水印(简化:仅左上角一个)
	col := color.RGBA{128, 128, 128, 60}
	point := fixed.Point26_6{fixed.I(50), fixed.I(100)}
	d := &font.Drawer{
		Dst:  overlay,
		Src:  image.NewUniform(col),
		Face: basicfont.Face7x13,
		Dot:  point,
	}
	d.DrawString("Watermark")

	out, _ := os.Create("output.png")
	defer out.Close()
	png.Encode(out, overlay)
}
const { createCanvas, loadImage, registerFont } = require('canvas');
const fs = require('fs');

async function addWatermark() {
  const img = await loadImage('input.jpg');
  const canvas = createCanvas(img.width, img.height);
  const ctx = canvas.getContext('2d');

  // 绘制原图
  ctx.drawImage(img, 0, 0);

  // 文字水印:平铺 + 透明度
  ctx.font = '36px Arial';
  ctx.fillStyle = 'rgba(128, 128, 128, 0.24)';  // 60/255 ≈ 0.24
  ctx.textAlign = 'left';

  const text = 'Watermark';
  for (let y = 0; y < img.height; y += 200) {
    for (let x = 0; x < img.width; x += 200) {
      ctx.fillText(text, x, y);
    }
  }

  const buffer = canvas.toBuffer('image/png');
  fs.writeFileSync('output.png', buffer);
}

addWatermark().catch(console.error);

常见问题

8 个高频疑问

图片水印工具怎么用?
进入页面后,先点击上传图片。上传成功后,右侧会出现预览区。在预览区下方,可以输入水印文字或上传水印图片,然后调整透明度(0-100%)、平铺方式(单张/重复平铺)和位置(左上、居中、右下等)。调整过程中预览会实时更新,满意后点击下载按钮即可保存带水印的图片。整个过程在浏览器内完成,无需安装任何软件。
水印文字支持什么字体?中文能正常显示吗?
工具默认使用浏览器自带的系统字体,中文、英文、数字、特殊符号都可以正常显示。如果上传的图片本身包含特殊字体,水印文字不会继承该字体,而是使用系统默认字体。如果需要特定字体效果,建议先在图片编辑软件里把文字做成水印图片,再通过上传水印图片的方式添加。
为什么下载后的图片比原图小?画质会变差吗?
下载时默认使用 JPEG 格式,有轻微有损压缩,所以文件体积会减小,画质损失肉眼几乎不可见。如果原图是 PNG 格式且需要保留透明背景或无损画质,下载时可以选择 PNG 格式(但文件会大很多)。目前工具不支持设置压缩质量参数,如果对画质有极高要求,建议用本地软件处理。
平铺水印怎么设置?能控制间距吗?
平铺模式会在整张图片上重复排列水印,覆盖所有区域。目前支持两种平铺方式:一种是密集平铺(水印紧挨着排列),另一种是稀疏平铺(水印之间有固定间距)。间距大小由工具自动计算,不能手动设置具体像素值。如果需要自定义间距,可以先用图片编辑软件制作好间距合适的水印图,再作为水印图片上传。
上传的图片大小有限制吗?最大支持多少?
工具基于浏览器运行,图片大小限制取决于浏览器内存和用户设备性能。一般来说,单张图片不超过 20MB 或分辨率不超过 10000×10000 像素可以流畅处理。超过这个范围可能导致浏览器卡顿或崩溃。如果图片过大,建议先用其他工具压缩后再上传。所有处理都在本地完成,不经过服务器,所以没有服务端文件大小限制。
水印透明度设置成多少比较合适?
透明度范围是 0%(完全透明)到 100%(完全不透明)。一般推荐 30%-50%:太低(<20%)水印容易被忽略或裁剪掉,太高(>70%)会遮挡原图内容。文字水印建议 40%-50%,图片水印建议 30%-40%。实际效果因原图颜色和内容而异,建议在预览区实时调整,找到既能看清水印又不影响原图观看的透明度值。
工具能批量处理多张图片吗?
目前不支持批量上传和批量处理,每次只能上传一张图片进行操作。如果需要批量给多张图片添加相同水印,可以下载一张处理后,用本地图片处理软件的批处理功能(如 Photoshop 的动作 + 批处理,或使用 IrfanView 的批量转换)来应用相同水印。本工具适合单张快速处理场景,批量需求建议用专业软件。
上传的图片和水印会不会被上传到服务器?
不会。工具全部在浏览器本地运行,图片上传后只存在于浏览器内存中,关闭页面或刷新后自动清除。可以打开浏览器的开发者工具(F12),切换到 Network(网络)标签,在操作过程中观察是否有任何网络请求发出——确认没有数据发送到任何外部服务器。断网状态下工具也可以正常使用。
选择 打开 +新窗口 esc关闭