我经常处理大量的照片。我希望应用一个通用的XMP预设(为cr2文件在camera raw中开发)
最初,我考虑使用ap ython模块应用预设,然后使用rawpy将图像从cr2转换为jpeg。这不起作用,我做的很多研究指出,由于复杂的镜头校正等原因,这些模块无法处理模块内的xmp应用程序
然后我想到的是手动查看这个过程,看起来好像当我将这些XMP应用于cr2文件时,所发生的一切就是XMP文件被复制和重命名,以适应相应cr2(原始)文件的文件名
所以我想,为什么不编写一个代码,在每个文件中复制它,然后在XMP文件与原始文件匹配后进行原始转换呢
我在原始文件上运行此代码后的预览在bridge中工作得非常好,因此我可以看到它们被复制并正确应用于cr2文件
我的问题是,有没有一种方法可以处理手头的cr2文件
我在代码中写了一个sleep,让它有时间应用预设,如下所示
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参数来尽可能接近所需的外观,但这并不正确
目前没有回答
相关问题 更多 >
编程相关推荐