趣味python系列:用图片给图片加水印

目录

环境要求和依赖

使用说明

概述

逐行代码描述

配套源码下载地址:

用python批量给图片加图片水印


环境要求和依赖

  • 操作系统:适用于任何支持Python的操作系统,包括Windows、macOS和Linux。
  • Python版本:推荐使用Python 3.6或更高版本。
  • 外部库
    • Pillow:用于图像处理的库。安装命令:pip install Pillow

使用说明

  1. 确保Python环境已安装,并且Pillow库也已安装。
  2. 将脚本保存为.py文件,例如add_image_watermark.py
  3. 准备水印图片,并确定好要添加水印的图片所在的目录。
  4. 在命令行中运行脚本,并按提示输入所需信息。
  5. 检查目录下的图片,确认水印已按预期添加。

概述

本文介绍的是一个Python脚本,用于为PNG格式的图片批量添加图片水印。这个工具允许用户自定义水印图片的位置和透明度,非常适合需要在多张图片上迅速应用统一视觉标识的场景,如品牌推广、版权声明等。

逐行代码描述

导入必需的模块

from PIL import Image
import os

使用PIL库进行图像处理,os模块用来处理文件和目录操作。

获取用户输入

path = input('请输入要添加水印的图片所在路径:')
imgpath = input('请输入要作为水印图片的路径:')
position_flag = int(input('请输入水印位置(0:左上角,1:左下角,2:右上角,3:右下角,4:居中):'))
alpha_value = int(input('请输入水印透明度(范围在1——10之间):'))

通过命令行输入获取水印的图片路径、位置和透明度。

定义图片水印函数

def img_mark(img):
    ...

定义一个函数img_mark,接受一个图片路径作为参数,用来处理并添加水印。

打开图片并转换格式

im = Image.open(img)
mark = Image.open(imgpath)
rgba_im = im.convert('RGBA')
rgba_mark = mark.convert('RGBA')

打开原始图片和水印图片,然后转换它们到RGBA格式以支持透明度处理。

计算并调整水印图片的大小

img_width, img_height = rgba_im.size
nimg_width, nimg_height = rgba_mark.size
scale = 10
mark_scale = max(img_width / (scale * nimg_width), img_height / (scale * nimg_height))
new_size = (int(nimg_width * mark_scale), int(nimg_height * mark_scale))
rgba_mark = rgba_mark.resize(new_size, Image.ANTIALIAS)

根据原始图片大小来缩放水印图片,保持其比例合适,不覆盖过多的主要内容。

设置水印位置

positions = {...}
position = positions[position_flag]

通过字典预定义水印的位置,根据用户输入选择具体的位置坐标。

应用水印透明度并合成

rgba_mark_alpha = rgba_mark.convert("L").point(lambda x: x // alpha_value)
rgba_mark.putalpha(rgba_mark_alpha)
rgba_im.paste(rgba_mark, position, rgba_mark_alpha)
rgba_im.save(img, 'PNG')

设置水印透明度,将处理后的水印图片粘贴到原始图片上,并保存。

批量处理目录中的PNG文件

try:
    files = os.listdir(path)
    for file in files:
        ...
except Exception as e:
    print('错误:', e)

遍历指定目录下的所有文件,对每个PNG文件执行水印添加操作,并处理可能出现的异常。

配套源码下载地址:

用python批量给图片加图片水印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E寻数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值