python之图像操作

在项目中建立一个文件夹 images,放置几张宽高都相同几张图片,比 如 JPG 格式的图片。完成以下几个任务:
(1)对某一张图片进行显示,显示图片的 size、模式和 format,旋转后显 示,转换为灰度图后进行显示、修改图片为原尺寸的一般进行显示。
(2)对images目录先的图片进行批处理,对每张图片加上自己“班内序号 姓 3/5
im.rotate(45).show() im.copy().show() im=im.convert("L") im.save("test.png")
#将图片向左旋转 45 度并显示 #将图片复制并且显示 #将图片模式变为灰度模式 #保存为 test.png 图片
print(im.mode) #图片的模式,如 RGB print(im.size) #图片的尺寸 print(im.format) #图片的格式 print(im.info) #图片的信息 print(im.histogram()) #图片的颜色直方图

名”格式的文字,并进行保存。
(3)图片拼接:对 images 目录下的所有图片进行横向拼接,并进行保存。
实验参考程序:
给图片加上文字参考程序
from PIL import Image, ImageFont, ImageDraw
im = Image.open("照片 1.jpg")
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("C:/Windows/Fonts/simhei.ttf", 180) draw.text((25, 25), "A88 张美丽", font=font)
im.show()

黑体 180 号

拼接图片参考程序
ims = [Image.open("images/"+fn) for fn in os.listdir("images/") if fn.endswith("JPG")]
width, height = ims[0].size
result = Image.new(ims[0].mode, (width,height* len(ims)))
for i, im in enumerate(ims): result.paste(im,box=(0, i*height))
result.save("result.JPG")

from PIL import Image, ImageFont, ImageDraw
import os

# 任务1
image_path = "./images/image.jpg"  # 选择要显示的图片路径

# 显示原始图片信息
im = Image.open(image_path)
print("Size:", im.size)
print("Mode:", im.mode)
print("Format:", im.format)

# 显示旋转后的图片
rotated_im = im.rotate(45)
rotated_im.show()

# 显示灰度图
gray_im = im.convert("L")
gray_im.show()

# 显示修改为原尺寸的图片
resized_im = im.resize(im.size)
resized_im.show()

# 任务2
output_dir = "./images/processed"
os.makedirs(output_dir, exist_ok=True)

# 对images目录下的图片进行批处理
image_files = [fn for fn in os.listdir("images") if fn.endswith(".jpg")]
for i, filename in enumerate(image_files):
    im = Image.open(os.path.join("images", filename))

    # 加上班内序号和名字
    draw = ImageDraw.Draw(im)
    font = ImageFont.truetype("C:/Windows/Fonts/simhei.ttf", 24)
    text = f"班内序号 姓{i+1}/5 名"
    draw.text((25, 25), text, font=font)

    # 保存处理后的图片
    output_path = os.path.join(output_dir, f"processed_{filename}")
    im.save(output_path)

# 任务3
images = [Image.open(os.path.join("images", fn)) for fn in image_files]
width, height = images[0].size
result = Image.new(images[0].mode, (width, height * len(images)))
for i, im in enumerate(images):
    result.paste(im, box=(0, i * height))

result.save("./images/result.jpg")

请确保在运行代码之前已经安装了PIL库(也称为Pillow)。您可以使用pip install pillow命令进行安装。
在运行代码之前,请将图片文件放置在名为"images"的文件夹中,并确保文件夹与Python脚本文件位于同一目录中。执行代码后,您将在相应的文件夹中看到生成的处理后的图片和拼接图片。
请注意,代码中使用的文字字体文件路径是针对Windows系统的设置,如果您使用的是其他操作系统,请根据实际情况修改字体文件路径。