图片文件

图片文件是存储图像信息的数据格式,常见的包括 .jpg.png.bmp 等。产品经理在日常工作中经常会需要使用图片文件,尤其是在某些情况下使用 Python 处理图片会非常高效,比如说:自动化图片处理;将图表或数据可视化图片嵌入到报告中,批量为图片添加公司 Logo 或版权信息,或者生成缩略图、裁剪图片,以及批量处理产品截图等等。

Python 提供多个强大的图片处理库,其中常用的有:

  • Pillow(PIL):用于基本的图像操作,如调整大小、裁剪、旋转和颜色操作。
  • OpenCV:更高级的图像处理库,支持计算机视觉任务。
  • Matplotlib:用于将数据可视化生成图片。
  • Imageio:用于图片格式的读写和动画生成。

现在我们来看几个使用 Pillow 处理图片的示例:

案例 1:使用 Pillow 库加载和显示图片

示例代码如下:

from PIL import Image

# 打开图片
img = Image.open("example.jpg")
img.show()  # 显示图片

案例 2:使用 Pillow 库调整图片大小

示例代码如下:

from PIL import Image

# 打开图片并调整大小
img = Image.open("example.jpg")
resized_img = img.resize((200, 200))  # 调整为 200x200
resized_img.save("resized_example.jpg")
print("图片已调整大小并保存!")

案例 3:使用 Pillow 库为图片添加水印

示例代码如下:

from PIL import Image, ImageDraw, ImageFont

# 打开图片
img = Image.open("example.jpg")
draw = ImageDraw.Draw(img)

# 添加水印
font = ImageFont.truetype("arial.ttf", 36)  # 字体文件和大小
draw.text((10, 10), "Company Logo", font=font, fill="white")

# 保存图片
img.save("watermarked_example.jpg")
print("水印已添加!")

案例 4:使用 Pillow 库批量处理图片

示例代码如下:

from PIL import Image
import os

# 批量压缩图片
input_dir = "images/"
output_dir = "compressed_images/"

for file_name in os.listdir(input_dir):
    if file_name.endswith(".jpg"):
        img = Image.open(os.path.join(input_dir, file_name))
        img.save(os.path.join(output_dir, file_name), quality=50)  # 压缩质量设置为 50%
print("批量图片压缩完成!")

综合案例:自动化生成用户界面缩略图

产品经理需要快速生成用户界面的缩略图,以便展示在报告中。这些图片需要统一尺寸和格式,并添加水印标识。

示例代码如下:

from PIL import Image, ImageDraw, ImageFont
import os

# 输入和输出文件夹
input_dir = "ui_screenshots/"
output_dir = "thumbnails/"
os.makedirs(output_dir, exist_ok=True)

# 处理图片
for file_name in os.listdir(input_dir):
    if file_name.endswith(".png"):
        img = Image.open(os.path.join(input_dir, file_name))
        
        # 调整大小
        img = img.resize((300, 200))  # 生成 300x200 的缩略图
        
        # 添加水印
        draw = ImageDraw.Draw(img)
        font = ImageFont.truetype("arial.ttf", 24)
        draw.text((10, 10), "Demo", font=font, fill="white")
        
        # 保存图片
        img.save(os.path.join(output_dir, file_name))
print("缩略图生成完成!")

常用第三方库:OpenCV

OpenCV 是一个强大的开源计算机视觉库,支持高级图像处理操作,如图像过滤、边缘检测、人脸识别等。

案例:将彩色图片转换为灰度图

示例代码如下:

import cv2

# 读取彩色图片
img = cv2.imread("example.jpg")

# 转换为灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 保存灰度图
cv2.imwrite("gray_example.jpg", gray_img)
print("灰度图片已保存!")

练习:

Qgenius产品经理小王正在优化网站图片的加载速度,因此需要批量压缩产品图片(将图片尺寸改为1024×1024像素),并为每张图片添加水印:“Qgenius”。但是他的代码输出的图片尺寸是800×800像素,水印内容也不正确。请帮他修改代码实现上述要求。

from PIL import Image, ImageDraw, ImageFont
import os

# 输入和输出文件夹
input_dir = "product_images/"
output_dir = "optimized_images/"
os.makedirs(output_dir, exist_ok=True)

for file_name in os.listdir(input_dir):
    if file_name.endswith(".jpg"):
        img = Image.open(os.path.join(input_dir, file_name))
        
        # 压缩图片
        img = img.resize((800, 800))  
        draw = ImageDraw.Draw(img)
        
        # 添加水印
        font = ImageFont.truetype("arial.ttf", 36)
        draw.text((20, 20), "Brand Name", font=font, fill="white")
        
        # 保存图片
        img.save(os.path.join(output_dir, file_name), quality=70)  # 压缩质量设置为 70%
print("产品图片优化完成!")

AI 助教

提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。