要将一个目录下的多组图片两两合并成一张,您可以使用Python中的PIL(Python Imaging Library)库来实现。下面是一个简单而有趣的示例代码。我们会将这些图片“黏在一起”,就像把两片面包夹住中间的生菜和培根一样!
首先,确保您安装了`Pillow`库。如果还没有安装,可以通过以下命令安装:
接下来,让我们来看一下具体代码:
import os
from PIL import Image
# 定义一个函数来合并图片
def merge_images(image1_path, image2_path, output_path):
# 打开两张图片
img1 = Image.open(image1_path)
img2 = Image.open(image2_path)
# 获取新图片的尺寸,这里假设我们将图片并排放置
total_width = img1.width + img2.width
max_height = max(img1.height, img2.height)
# 创建一个新的空白图片
new_image = Image.new('RGB', (total_width, max_height))
# 将两张图片粘贴到新图片上
new_image.paste(img1, (0, 0))
new_image.paste(img2, (img1.width, 0))
# 保存合并后的图片
new_image.save(output_path)
print(f'合并成功:{output_path}')
# 指定图片所在的目录
image_dir = 'path/to/your/images'
output_dir = 'path/to/save/merged/images'
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 获取目录下所有图片文件
images = [f for f in os.listdir(image_dir) if f.endswith(('.png', '.jpg', '.jpeg'))]
# 两两合并图片
for i in range(0, len(images), 2):
if i + 1 < len(images): # 确保有成对的图片
image1_path = os.path.join(image_dir, images[i])
image2_path = os.path.join(image_dir, images[i+1])
output_path = os.path.join(output_dir, f'merged_{i//2}.jpg')
merge_images(image1_path, image2_path, output_path)
print("处理完成!")
### 代码解释:
1. **导入库**:导入必要的模块,Pillow用于处理图片,os用于文件操作。
2. **合并函数**:`merge_images`函数用于打开两张图片、计算新图片的宽度和高度、创建新图片并粘贴两张原图,然后保存新图片。
3. **获取图片列表**:从指定目录获取所有jpg和png文件。
4. **两两合并**:通过循环以每两个文件为一组调用合并函数。
5. **输出结果**:每次合并后会在输出目录生成一张新图片。
### 小提示:
- 确保你的图片数量是偶数,如果是奇数,最后一张图片可能会孤独地呆在那里。
- 修改合并方式(例如上下合并),只需调整`paste`方法中的坐标。
快去试试吧!祝您合并愉快,就像做三明治一样简单!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。