萧随风 发表于 2024-7-31 17:22:13

如何将一个目录下多组图片,两两合并一张

就是这样一组2张不同时间的图片,如何用python实现合并成一张

FishC 发表于 2024-7-31 17:25:38

要将一个目录下的多组图片两两合并成一张,您可以使用Python中的PIL(Python Imaging Library)库来实现。下面是一个简单而有趣的示例代码。我们会将这些图片“黏在一起”,就像把两片面包夹住中间的生菜和培根一样!

首先,确保您安装了`Pillow`库。如果还没有安装,可以通过以下命令安装:

pip install 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 =

# 两两合并图片
for i in range(0, len(images), 2):
    if i + 1 < len(images):# 确保有成对的图片
      image1_path = os.path.join(image_dir, images)
      image2_path = os.path.join(image_dir, images)
      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 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-7-31 19:48:52

      "合并"两个文件是指把符合条件的两个文件的字节内容合并后写入其中的一个文件,再把另一个文件删除?

萧随风 发表于 2024-8-1 08:46:25

jackz007 发表于 2024-7-31 19:48
"合并"两个文件是指把符合条件的两个文件的字节内容合并后写入其中的一个文件,再把另一个文件删除 ...

不是,两张图片左右合在一起(新图存放另外文件夹)。不需要删除
页: [1]
查看完整版本: 如何将一个目录下多组图片,两两合并一张