移除图片水印是一个很常见的需求,我们经常会下载到带有APP水印或者AI生成水印的图片,下面介绍几种我个人用到的去除图片水印方式。
Windows 11自带的图片应用
使用方式很简单,只要你的系统是Window11,只需要右键-使用照片打开,然后点击左上角的编辑,点击《擦除》工具,涂抹掉想要删除的水印,最后点击保存就OK了。
Github上的IOPaint
如果你的系统不是windows或者比windows11更低的版本,可以下载IOPaint,支持多平台。
我测试了两种安装方式,一种是python安装,一种是docker安装,都很简单快速。
python 安装
# In order to use GPU, install cuda version of pytorch first.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118
# AMD GPU users, please utilize the following command, only works on linux, as pytorch is not yet supported on Windows with ROCm.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/rocm5.6
pip3 install iopaint
iopaint start --model=lama --device=cpu --port=8080
docker-compose 安装
version: '3.8'
services:
lama-cleaner:
image: cwq1913/lama-cleaner:cpu-1.2.5
container_name: lama-cleaner
ports:
- "8080:8080"
volumes:
- type: bind
source: ./cache # Windows 主机上的本地文件夹路径
target: /root/.cache # 容器内的目标挂载路径
command: ["lama-cleaner", "--device=cpu", "--port=8080", "--host=0.0.0.0"]
restart: unless-stopped
windows安装
下载安装程序,解压包,你会得到三个bat文件
win_setup.bat:用于首次安装依赖项
win_config.bat:启动 gradio 参数配置界面
win_update.bat:在需要更新 iopaint 版本时执行
安装成功后,就可以在浏览器中打开 http://localhost:8080 来使用了,使用方式跟方法1几乎一样:打开图片,涂抹想要消除的地方然后等待生效后保存。
批量处理图片
如果你有很多图片需要处理,同样可以使用IOPaint来实现,首先需要安装python版本。
安装python版本
pip3 install iopaint
iopaint start --model=lama --device=cpu --port=8080
输入命令检测是否安装成功
iopaint --help
批量处理图片场景
我的批量去除图片场景是 用AI生成不同分辨率的图片,一次性批量去除所有图片的水印,这些图片的共同点是在相同分辨率下的水印位置是固定的。处理方法是以下步骤:
处理步骤
-
上传图片到IOPaint,手动消除水印,然后在设置里选择Download Mask,就会获得带有水印位置的图片。每个分辨率都需要处理一遍。
-
编写代码,批量获取某个文件夹下的所有图片,根据分辨率比例获取步骤1拿到的水印图片,然后使用命令输出到新的文件夹。
-
(可选)根据文件名区分不同平台的图片,比如不同AI生成的图片水印位置是不同的,根据不同平台和不同分辨率获取水印图片。
当然如果一批次的图片水印位置是固定的,可以用更简单的指令实现:
## 分别输入图片路径、水印路径、输出路径
iopaint run --model=lama --device=cpu \
--image=/path/to/image_folder \
--mask=/path/to/mask_folder \
--output=output_dir
如果有人感兴趣的话,我会把代码放在github上,其实逻辑很简单,遍历某个文件夹下的所有图片,判断分辨率获取水印图片,然后使用iopaint的指令处理图片。可以把这个需求告诉AI轻松实现。