在Python中将PSD图层导出到EXR

问题描述 投票:0回答:2

我正在尝试编写一个程序来读取 .psd 文件,将图层拆分为单独的图像(保持原始图像的尺寸)并将它们导出为 EXR 文件。

我目前正在尝试使用 OpenImageIo 库来完成此任务,但文档并不清楚如何在 python 中实现此目的。

我已成功读取完整的 .psd 并将其导出到 .exr,但我一直在尝试的任何事情似乎都表明有不止一层(子图像)可以与之交互。

有吗:

  1. 我遗漏了一些明显的东西,或者
  2. 有更好的方法来实现这一点吗?

旁注:

我使用 psd_tools2 取得了一些成功,但图像无法导出为 .exr,尺寸也不是正确的。

python psd openimageio
2个回答
1
投票

这实际上相对简单,但有一个警告,目前它似乎仅支持 8 位 psd 文件。

import OpenImageIO as oiio

sourcefile = '/path/to/sourcefile.psd'
buf = oiio.ImageBuf(sourcefile)

for layer in range(buf.nsubimages):
    buf.reset(sourcefile, subimage=layer)
    buf.write('/tmp/mylayer_{l}.exr'.format(l=layer))

0
投票

如果将来有人偶然发现这个问题。我已经在 github 的讨论页面中发布了为什么会发生这种情况以及如何实现它:

https://github.com/AcademySoftwareFoundation/OpenImageIO/discussions/3910#discussioncomment-8913737

TL;DR 基本上是 Photoshop 奇怪地存储 16 位和 32 位文件,目前 OpenImageIO 的代码中没有考虑到这一点(截至版本 2.5.9.0)

© www.soinside.com 2019 - 2024. All rights reserved.