在你的项目中建立一个文件夹 images,放置几张宽高都相同几张图片,比 如 JPG 格式的图片。完成以下几个任务: (1)对某一张图片进行显示,显示图片的 size、模式和 format,旋转后显 示,转换为灰度图后进行显示、修改图片为原尺寸的一般进行显示。 (2)对images目录先的图片进行批处理,对每张图片加上自己“班内序号 姓 4 / 5 名”格式的文字,并进行保存。 (3)图片拼接:对 images 目录下的所有图片进行横向拼接,并进行保存。
时间: 2024-02-05 09:12:18 浏览: 21
好的,我会为您详细说明如何完成这些任务。
首先,您需要在您的项目文件夹中创建一个名为 images 的文件夹,并将几张宽高相同的 JPG 格式的图片放入其中。
接下来,我们将使用 Python 中的 PIL 库来处理这些图片。如果您还没有安装 PIL 库,可以使用以下命令进行安装:
```
pip install Pillow
```
现在我们可以开始完成任务了。
### 任务一
首先,我们需要导入 PIL 库,并打开一张图片。假设我们选择了一张名为 image.jpg 的图片,您可以使用以下代码来打开并显示图片的信息:
```python
from PIL import Image
# 打开图片
img = Image.open("images/image.jpg")
# 显示图片信息
print("图片尺寸:", img.size)
print("图片模式:", img.mode)
print("图片格式:", img.format)
# 显示原图
img.show()
# 旋转并显示图片
img_rotate = img.rotate(45)
img_rotate.show()
# 转换为灰度图并显示
img_gray = img.convert("L")
img_gray.show()
# 修改图片为原尺寸的一半并显示
img_half = img.resize((img.size[0] // 2, img.size[1] // 2))
img_half.show()
```
这段代码会依次显示图片的尺寸、模式和格式,并分别对图片进行旋转、转换为灰度图和修改尺寸后进行显示。
### 任务二
接下来,我们来对图片进行批处理。假设我们有两张图片,分别命名为 image1.jpg 和 image2.jpg,我们要对它们加上对应的文字后保存。
```python
from PIL import Image, ImageDraw, ImageFont
import os
# 获取 images 文件夹下的所有图片路径
path = "images/"
files = os.listdir(path)
# 循环处理每张图片
for i, file in enumerate(files):
if file.endswith(".jpg"):
# 打开图片
img = Image.open(path + file)
# 添加文字
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 20)
text = f"班内序号 {i+1} 姓 4 / 5 名"
draw.text((10, 10), text, fill=(255, 255, 255), font=font)
# 保存图片
img.save(path + "processed_" + file)
```
这段代码会循环处理 images 文件夹下的所有 JPG 格式的图片,对每张图片添加对应的文字后保存为 processed_ 开头的文件名。
### 任务三
最后,我们来实现图片拼接功能。假设我们要将 images 文件夹下的所有图片进行横向拼接,并保存为一张新的图片。
```python
from PIL import Image
import os
# 获取 images 文件夹下的所有图片路径
path = "images/"
files = os.listdir(path)
# 打开所有图片并计算拼接后的尺寸
images = []
width = 0
height = 0
for file in files:
if file.endswith(".jpg"):
img = Image.open(path + file)
images.append(img)
width += img.width
height = max(height, img.height)
# 创建新的图片并拼接所有图片
new_img = Image.new("RGB", (width, height))
x_offset = 0
for img in images:
new_img.paste(img, (x_offset, 0))
x_offset += img.width
# 保存图片
new_img.save(path + "merged.jpg")
```
这段代码会循环遍历 images 文件夹下的所有 JPG 格式的图片,打开并计算它们拼接后的尺寸,创建一张新的图片并将所有图片横向拼接后保存为 merged.jpg 文件。