Pillow库能批量处理图片,按平面设计稿批量生成设计图

157 阅读4分钟

Pillow库(PIL的友好分支)在平面设计中有广泛的应用,可以用于处理和生成图像。以下是一些具体的应用场景:

  1. 图像裁剪和调整大小

    • 裁剪图像以适应特定尺寸。
    • 调整图像大小以符合设计要求,同时可以选择是否保持原始比例。
  2. 图像旋转和翻转

    • 旋转图像以适应不同的布局需求。
    • 水平或垂直翻转图像。
  3. 图像合成

    • 将多个图像组合在一起,形成复杂的图像效果。
    • 在图像上叠加文本、图形或其他图像元素。
  4. 颜色调整

    • 转换图像为灰度图像。
    • 调整图像的颜色平衡、亮度、对比度等。
  5. 文本添加

    • 在图像上添加文本,支持多种字体和样式。
    • 支持多语言文本的渲染。
  6. 图像滤镜和特效

    • 应用各种滤镜效果,如模糊、锐化、边缘检测等。
    • 添加特殊效果,如阴影、发光等。
  7. 批量处理图像

    • 对大量图像进行统一的处理操作,提高工作效率。
    • 自动生成图像集,如缩略图、预览图等。
  8. 二维码生成与嵌入

    • 生成二维码并嵌入到图像中。
    • 读取图像中的二维码信息。
  9. 图像格式转换

    • 将图像从一种格式转换为另一种格式,如JPEG到PNG。
    • 支持多种图像格式,包括但不限于JPEG、PNG、GIF、BMP等。
  10. 图像压缩

    • 压缩图像以减小文件大小,便于存储和传输。
    • 优化图像质量,确保在压缩过程中保持良好的视觉效果。

示例代码说明

以下是一些具体的代码示例,展示了Pillow库在上述应用场景中的应用:

1. 图像裁剪和调整大小

from PIL import Image

# 打开图像文件
image = Image.open('1.jpg')

# 获取图像的宽度和高度
width, height = image.size

# 定义裁剪区域
crop_width = 700
crop_height = 1000

# 计算裁剪的左上角坐标 (x, y)
x = (width - crop_width) // 2
y = (height - crop_height) // 2

# 裁剪图像
cropped_image = image.crop((x, y, x + crop_width, y + crop_height))

# 调整图像大小
ratio = 700 / image.width
resized_image = image.resize((int(image.width * ratio), int(image.height * ratio)))

# 保存图像
cropped_image.save('cropped_image.jpg')
resized_image.save('resized_image.jpg')

2. 图像旋转和翻转

from PIL import Image

# 打开图像文件
image = Image.open('1.jpg')

# 旋转图像
rotated_image = image.rotate(45)

# 水平翻转图像
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)

# 保存图像
rotated_image.save('rotated_image.jpg')
flipped_image.save('flipped_image.jpg')

3. 图像合成

from PIL import Image

# 打开模板图像和要替换的图像
template = Image.open('template.jpg')
img_to_replace = Image.open('replacement.jpg')

# 将模板图像中的一个特定区域替换为新图像
template.paste(img_to_replace, (0, 0))

# 保存合成后的图像
template.save('combined_image.jpg')

4. 颜色调整

from PIL import Image

# 打开图像文件
image = Image.open('1.jpg')

# 转换图像为灰度图像
gray_image = image.convert('L')

# 保存灰度图像
gray_image.save('gray_image.jpg')

5. 文本添加

from PIL import Image, ImageDraw, ImageFont

# 打开图像文件
image = Image.open('1.jpg')

# 创建绘图对象
draw = ImageDraw.Draw(image)

# 选择一个字体文件路径
font = ImageFont.truetype('arial.ttf', 50)

# 绘制文本
draw.text((500, 300), 'Hello, Pillow!', fill='black', font=font)

# 保存图像
image.save('text_added_image.jpg')

6. 图像滤镜和特效

from PIL import Image, ImageFilter

# 打开图像文件
image = Image.open('1.jpg')

# 应用模糊滤镜
blurred_image = image.filter(ImageFilter.BLUR)

# 保存模糊图像
blurred_image.save('blurred_image.jpg')

7. 批量处理图像

import os
from PIL import Image

def process_images(input_folder, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(input_folder):
        if filename.endswith('.jpg'):
            image_path = os.path.join(input_folder, filename)
            image = Image.open(image_path)
            # 调整图像大小
            ratio = 700 / image.width
            resized_image = image.resize((int(image.width * ratio), int(image.height * ratio)))
            # 保存调整后的图像
            resized_image.save(os.path.join(output_folder, filename))

input_folder = 'input_images'
output_folder = 'processed_images'
process_images(input_folder, output_folder)

8. 二维码生成与嵌入

from PIL import Image
import qrcode

# 生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data('https://www.example.com')
qr.make(fit=True)

# 创建二维码图像
qr_image = qr.make_image(fill_color="black", back_color="white")

# 打开模板图像
template = Image.open('template.jpg')

# 将二维码图像粘贴到模板图像上
qr_position = (50, 700)
template.paste(qr_image, qr_position)

# 保存最终图像
template.save('final_image.jpg')

9. 图像格式转换

from PIL import Image

# 打开图像文件
image = Image.open('1.jpg')

# 保存为PNG格式
image.save('converted_image.png')

10. 图像压缩

from PIL import Image

# 打开图像文件
image = Image.open('1.jpg')

# 压缩图像
image.save('compressed_image.jpg', optimize=True, quality=85)

通过这些示例,你可以看到Pillow库在平面设计中的强大功能和灵活性。无论你是进行简单的图像处理还是复杂的图像合成,Pillow都能提供所需的支持。