0

我会定期批量处理很多照片。我正在寻找应用一个常见的 XMP 预设(在相机原始数据中为 cr2 文件开发)

最初我查看了使用 ap ython 模块来应用预设,然后使用 rawpy 将图像从 cr2 转换为 jpeg。这没有用,我所做的很多研究都指出,由于复杂的镜头校正等原因,这些模块无法处理模块内的 xmp 应用程序。

然后我想到的是手动查看该过程,看起来好像当我将这些 XMP 应用于 cr2 文件时,所发生的只是 XMP 文件被复制并重命名以适合相应 cr2 的文件名(原始文件。

所以我想为什么不编写一个代码来为每个文件复制它,然后在 XMP 文件与原始文件匹配后进行原始转换。

在原始文件上运行此代码后的预览在桥中完美运行,因此我可以看到它们被复制并正确应用于 cr2 文件。

我的问题是,有没有办法通过手头的这些更改来处理 cr2 文件?

我在代码中写了一个睡眠,以便有时间应用预设,如下所示

import os
import shutil
import PIL
import rawpy
import imageio
from PIL import Image
import time


xmp_preset = "path/to/PRESET.xmp"
raw_sorted = "path/to/RAW/"
jpg_output = "path/to/JPEG/"

for f in sorted(os.listdir(raw_sorted)):
    f_name,f_ext = (os.path.splitext(f))
    xmp_name01 = ('{}{}'.format(f_name,".xmp"))


    if os.path.exists(".DS_Store"):
        os.remove(".DS_Store")
    if os.path.exists("Thumbs.db"):
        os.remove("Thumbs.db")

    if f.endswith(".cr2"):
        shutil.copy(xmp_preset, raw_sorted)
        os.rename(raw_sorted + "PRESET.xmp", raw_sorted + xmp_name01)



time.sleep(10)

for f in os.listdir(raw_sorted):
    if f.endswith(".cr2"):
        f_name, f_ext = os.path.splitext(f)
        filepath = os.path.join(raw_sorted,f)
        jpegext = ".jpg"
        with rawpy.imread(filepath) as raw:
            rgb = raw.postprocess(use_camera_wb=True,gamma=None)
            path = os.path.join(jpg_output,f_name)
            newname = ("{}{}".format(path,jpegext))

            imageio.imwrite(newname,rgb)

代码工作正常,它带来了 XMP 文件,正确重命名它,我可以看到它已被应用,但是,当 jpeg 输出到定义的文件夹时,它就好像 XMP 从来不是一个因素一样。

有没有办法使用应用的 XMP 输出 jpeg 文件?我尝试使用 rawpy 参数来尝试尽可能接近所需的外观,但这并不正确。

4

0 回答 0