图片加水印
为图片添加文字或图片水印,支持调整位置、透明度、大小
拖拽图片到此处,或点击选择文件
支持 JPG、PNG、WebP、BMP 格式,可一次选择多张
什么是图片加水印?
图片水印是在照片或设计图上叠加文字、Logo 或另一张图片,用来标明版权、来源、品牌、使用状态或发布场景。它常用于商品图、作品集、活动照片、培训资料、社交媒体内容和交付前预览。水印的关键不是越大越好,而是在可识别和不破坏画面之间取得平衡:既要降低随手盗用的可能,又不能挡住主体、纹理、文字或重要细节。位置、透明度、尺寸、平铺方式和旋转角度都应根据图片类型调整。本工具在浏览器本地处理,适合快速标注和轻量保护。
使用方法
使用方法
- 拖拽或点击上传图片(支持多选)
- 选择水印类型:文字水印或图片水印
- 设置水印内容、位置、透明度、大小和旋转角度
- 点击「添加水印」按钮,预览并下载
水印预览提示
- 请在不同尺寸图片上预览水印效果;大图上清晰的水印,在缩略图上可能过重或无法辨认。
- 建议保留一份无水印的原图,以便后续调整水印位置、透明度或文字内容。
使用场景
技术原理
水印处理完全在 2D Canvas 上完成。源图片通过 ctx.drawImage 以原始像素尺寸绘制到 HTMLCanvasElement 上,然后使用 ctx.fillText 叠加文字或使用第二次 drawImage 调用叠加图片 Logo。透明度由 ctx.globalAlpha 控制,它会乘以后续每个像素的 Alpha 通道;globalAlpha 设为 0.5 时叠加在 50% 透明的 PNG 上,最终像素只有 25%,这是「为什么水印看不见」最常见的原因。 定位使用标准 Canvas 变换:ctx.translate 将原点移动到放置锚点(左上、右上、居中、右下,或 3×3 网格的每个单元格),ctx.rotate(angle) 围绕该原点旋转对角印章,然后绘制调用在不添加额外偏移的情况下放置水印。平铺水印使用 createPattern 传入旋转后的源图,再通过 ctx.fillRect 在整个 Canvas 上绘制,这就是为什么全页 DRAFT 条纹无论源图尺寸如何都能保持均匀间距。字体度量来自 ctx.measureText,它返回 CSS 像素单位,因此一个在 2x 显示器上适配预览的 28px 标签在 1x 移动端导出时可能会被裁切。 导出步骤使用 canvas.toBlob 配合 'image/png'、'image/jpeg' 或 'image/webp' 格式,有损格式可选质量参数。Canvas 以源图分辨率运行,因此输出保留原始像素尺寸,但不携带源图 EXIF 方向信息、ICC 配置文件或其他元数据。超过 30 张大图的批量处理会阻塞 UI 线程,因为 toBlob 虽然是异步的,但绘制堆栈在主线程上同步运行,因此大批量任务适合将 Canvas 工作移入 Web Worker 配合 OffscreenCanvas 处理。
- 合成堆栈:ctx.drawImage 绘制底图,ctx.fillText(或第二次 drawImage)绘制水印,ctx.globalAlpha 控制透明度乘法。
- Alpha 计算:globalAlpha 与每个像素的现有 Alpha 值相乘,因此 0.5 的水印叠加在 0.5 Alpha 的 PNG 上渲染为 0.25,而非 0.5。
- 旋转:先用 ctx.translate 移动到锚点,再用 ctx.rotate(angle) 按弧度旋转,然后在原点 (0,0) 绘制,使变换保持以放置点为中心。
- 平铺:createPattern 返回 CanvasPattern,fillRect 可在整个 Canvas 上绘制,无论源图尺寸如何都能保持间距均匀。
- 文字度量:measureText 返回 CSS 像素单位,因此在 2x 预览上合适的标签在 1x 移动端导出时可能溢出图片边缘;不确定时按 canvas.width 等比缩放。
- 导出:toBlob('image/png' | 'image/jpeg' | 'image/webp', quality) 保留源图分辨率但会去除 EXIF 和 ICC 信息;如果方向正确性很重要,需在绘制前根据 EXIF 方向旋转。
示例
右下角版权文字
类型:文字水印
文本:"(c) 2026 ToolAct Studio"
字体:28 px,白色(#FFFFFF)
位置:右下角
不透明度:50%
用途:作品集照片、博客主视觉图全图斜向平铺草稿水印
类型:文字水印,平铺
文本:"DRAFT - DO NOT SHARE"
字体:48 px,浅灰色(#CCCCCC)
旋转:-30 度
不透明度:25%
平铺间距:200 px
用途:未发布商品图的客户审稿PNG logo 放在左上角,缩放 15%
类型:图片水印
水印文件:brand-logo.png(透明背景)
位置:左上角,内边距 20 px
缩放:原图宽度的 15%
不透明度:80%
效果:在 1920 px 主视觉图上 logo 显示宽度为 288 px批量处理 30 张商品图
输入:30 张 JPG 商品图,每张 2000 x 2000 px
水印:文字 "shop.toolact.com"
位置:底部居中,边距 40 px
不透明度:60%,输出格式:JPG,质量 92
处理耗时:约 8 秒,总输出:24 MB常见问题
图片会被上传去加水印吗?
不会。水印通过 canvas 在你的浏览器中合成到图片上,原始数据和加水印后的输出都不会离开你的设备。
支持哪些水印样式?
支持文字水印(自定义字符串、字号、颜色、不透明度、旋转角度,以及平铺/重复以铺满全图)和图片水印(在指定位置以指定不透明度叠加你自己的 logo)。大多数版本可以同时使用两种。
水印应该放哪里?
放在角落(通常右下角)干扰最小,但容易被裁掉。整图平铺的水印更难干净去除,但会影响画面美观。半透明居中水印则在两者之间取得平衡。请根据优先考虑可读性还是版权保护来选择。
水印能被去除吗?
对于背景规整的照片,下定决心的攻击者通常可以通过裁剪或内容感知填充去除单角水印。平铺、半透明的水印更难处理。没有哪种水印是无法去除的——把它当成威慑和版权标记,而不是真正的保护。
输出格式和画质?
PNG 能锐利地保留水印边缘(推荐用于线稿和截图)。JPEG 会重新编码,可能让水印略微变软;选 90 以上的画质可获得清晰输出。页面允许你选择格式和画质。
EXIF 和元数据会保留吗?
多半不会——基于 canvas 的处理通常会丢弃 EXIF 和 ICC 配置文件。这可能对隐私有利(相机元数据、GPS 位置和时间戳被去除),但意味着加水印后的副本不再是取证原件。
可以批量给多张图片加水印吗?
可以。拖入多个文件,会对每张应用相同的水印。批量大小受浏览器内存限制——非常大的批量会拖慢处理速度,移动端可能内存不足。建议每批 20-50 张以保持稳定。