AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1804527
Accepted
dongle
dongle
Asked: 2023-08-17 07:06:32 +0800 CST2023-08-17 07:06:32 +0800 CST 2023-08-17 07:06:32 +0800 CST

在 Photoshop 中合并包含 34,000 张图像的文件夹

  • 772

我有一个包含 34,000 张图像的文件夹(大小完全相同),我想将它们全部叠加在一起,执行相当于 Photoshop 的“深色”图层混合模式的操作。

我认为操作不会起作用,因为这些操作是为了对一批图像执行给定的操作。我需要类似于“文件>脚本>将文件加载到堆栈中”的内容。问题是,如果我尝试对 Photoshop 挂起的整个文件夹执行此操作。

有某种方法可以将其变成自定义操作吗?如果可能的话,它可能会有所帮助,因为我可以在每次迭代时展平并合并图层,以避免产生包含 34,000 个图层的笨重文件。

如果有人对如何使用 Imagemagick 实现我的目标有任何想法,我也愿意使用 Imagemagick...

images
  • 2 2 个回答
  • 76 Views

2 个回答

  • Voted
  1. Perez
    2023-08-17T11:33:28+08:002023-08-17T11:33:28+08:00

    我想您将很难克服 Photoshop 由于涉及的文件数量而挂起的问题。

    然而,既然您表示您愿意使用 Imagemagick。

    下面是一个 Python 脚本,它通过三个步骤完成此任务。

    1. 划分任务:不要一次处理所有图像,而是将图像分组。例如,一次处理 100 张图像。
    2. 混合分块图像:使用 ImageMagick 混合每个块并生成结果图像。
    3. 混合结果图像:处理所有块后,将结果图像混合在一起。
    import os
    import subprocess
    
    IMAGE_FOLDER = '/path/to/images'  # Replace with your images path
    CHUNK_SIZE = 100
    OUTPUT_FOLDER = '/path/to/output'  # Replace with your desired output path
    
    images = sorted(os.listdir(IMAGE_FOLDER))
    
    chunk_images = [images[i:i + CHUNK_SIZE] for i in range(0, len(images), CHUNK_SIZE)]
    resultant_images = []
    
    for idx, chunk in enumerate(chunk_images):
        first_image = chunk[0]
        command = f'convert {os.path.join(IMAGE_FOLDER, first_image)}'
    
        for image in chunk[1:]:
            command += f' {os.path.join(IMAGE_FOLDER, image)} -compose darken -composite'
    
        output_image = os.path.join(OUTPUT_FOLDER, f'result_{idx}.png')
        command += f' {output_image}'
        subprocess.call(command, shell=True)
        resultant_images.append(output_image)
    
    # Now blend the resultant images together
    command = f'convert {resultant_images[0]}'
    
    for image in resultant_images[1:]:
        command += f' {image} -compose darken -composite'
    
    final_output_image = os.path.join(OUTPUT_FOLDER, 'final_result.png')
    command += f' {final_output_image}'
    subprocess.call(command, shell=True)
    

    您需要安装 ImageMagick 并从终端访问转换命令,并且需要替换路径以适合您的本地设置。

    • 2
  2. Best Answer
    dongle
    2023-08-18T09:07:39+08:002023-08-18T09:07:39+08:00

    好吧,受到另一个答案的启发,这个答案部分有效,但有一些错误,我编写了自己的 Python 实现:

    #!/usr/bin/env python3
    
    import os
    import subprocess
    
    dir = [path to dir with all of the images]
    targetdir = [path to target dir]
    mylist = os.listdir(dir)
    
    max = 34867
    i = 0
    
    while i <= 34867:
        try:
            cmd = ['convert', targetdir+'composite'+str(i)+'.png', dir+mylist[i] ,'-compose','darken','-composite',targetdir+'composite'+str(i+1)+'.png']
            subprocess.call(cmd, shell=False)
            print(i)
            os.remove(targetdir+'composite'+str(i)+'.png')
            i = i+1
        except:
            i = i-1
            print("hmm "+dir+mylist[i]+" didn't work")
    

    您只需从序列中取出第一个文件,将其命名为“composite0.png”并将其放入目标目录中。然后让它撕裂,并观察标准输出中的数字。时不时地出现 Imagemagick 错误,我需要解决这些错误,所以现在只需添加一个例外,直到我能够弄清楚这些错误。

    • 1

相关问题

  • 如何在 HTML/JavaScript 中为更改的背景图像添加属性?

  • 在数码相框上以横向显示的人像照片

  • 从 PowerPoint 2019 中以全分辨率提取原始 PNG 图像?

  • 如何计算图像的大小?

  • 如何用ffmpeg 2.0.2保存TS视频流?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve