要将一个目录下的多组图片两两合并成一张,您可以使用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 小助理,如未能正确解答您的问题,请继续追问。