【问题标题】:Merging images from different source folders合并来自不同源文件夹的图像
【发布时间】:2020-11-30 20:01:28
【问题描述】:

我有两个不同的文件夹 a 和 b。 “a”文件夹包含格式为 a_i.jpg(其中 i = 1 到 N)的图像。 “b”文件夹包含格式为 b_i.jpg 的图像。我想合并这些图像,将 a_1 与 b_1 合并,将 a_2 与 b_2 合并,.... a_N 与 b_N,然后将新图像数据集存储在包含“N”个相同格式和 n_i 的合并图像的不同文件夹中。 jpg。

注意:我确保所有图像的大小相同。

使用此代码,我可以合并单个文件,但是如何循环遍历上面提到的整个文件夹?

images = [Image.open(x) for x in ['in.jpg', 'tulips.jpg']]
widths, heights = zip(*(i.size for i in images))

total_width = sum(widths)
max_height = max(heights)

new_im = Image.new('RGB', (total_width, max_height))

x_offset = 0
for im in images:
  new_im.paste(im, (x_offset,0))
  x_offset += im.size[0]

new_im.save('new2.jpg')

【问题讨论】:

    标签: python image merge


    【解决方案1】:

    我希望下面的解决方案是您正在寻找的

    source_folder1 = "a"
    source_folder2 = "b"
    target_folder = "Image_Merged"
    for img_no in range(1,n+1):
        img1 = source_folder1+"_"+str(img_no)+".jpg"
        img2 = source_folder2+"_"+str(img_no)+".jpg"
        
        images = [Image.open(x) for x in [img1, img2]]
        widths, heights = zip(*(i.size for i in images))
    
        total_width = sum(widths)
        max_height = max(heights)
    
        new_im = Image.new('RGB', (total_width, max_height))
    
    
        x_offset = 0
        for im in images:
          new_im.paste(im, (x_offset,0))
          x_offset += im.size[0]
    
        new_im.save(target_folder+"/target_folder_"+str(img_no)+".jpg")
    

    【讨论】:

    • 感谢@Palash Jhamb。我试过了,但它抛出了“FileNotFoundError: [Errno 2] No such file or directory: '/a_1' error”。我所做的只是在 a 和 b 目录之前添加一个“/”,因为它们位于我的工作文件的路径中。是不是我做错了什么?
    • 可能是因为没有添加文件扩展名。我会更新答案。立即尝试
    • 非常感谢@Palash Jhamb。它按我的意愿完美运行。我真的很感谢你的耐心和帮助!上帝保佑你!!!
    • @BaoLuo 如果您觉得我的回答有用,请点赞并打勾。谢谢。
    【解决方案2】:

    基于@palash-jhamb 的回答,变化不大

    from PIL import Image
    
    source_folder1 = 'a/'
    source_folder2 = 'b/'
    target_folder = 'Image_Merged/'
    
    n = len(source_folder1)+1
    
    for img_no in range(1,n+1):
        img1 = (source_folder1+str(img_no)+".jpg")
        img2 = (source_folder2+str(img_no)+".jpg")
        
        images = [Image.open(x) for x in [img1, img2]]
        widths, heights = zip(*(i.size for i in images))
    
        total_width = sum(widths)
        max_height = max(heights)
    
        new_im = Image.new('RGB', (total_width, max_height))
    
    
        x_offset = 0
        for im in images:
          new_im.paste(im, (x_offset,0))
          x_offset += im.size[0]
    
        new_im.save(target_folder+"/target_folder_"+str(img_no)+".jpg")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多