Я регулярно работаю с большим количеством своих фотографий. Я пытаюсь применить стандартную предустановку XMP (разработанную в Camera Raw для файлов cr2)
Изначально я рассматривал использование модуля ap ython для применения предустановки, а затем преобразовал изображение из cr2 в jpeg с помощью rawpy. Это не сработало, и многие исследования, которые я проводил, указывали на тот факт, что эти модули не могли обрабатывать приложение xmp внутри модуля из-за сложной коррекции объектива и т. Д. c.
Что я тогда я подумал о том, чтобы посмотреть на процесс вручную, и казалось, что когда я применил эти XMP к файлам cr2, все, что произошло, было то, что файл XMP копировался и переименовывался в соответствии с именем файла соответствующего файла cr2 (RAW). .
Поэтому я подумал, почему бы не написать код, который копирует его для каждого файла, а затем выполнить предварительное преобразование, как только файл XMP будет сопоставлен с необработанным.
Предварительный просмотр после запуска этого файла код в raw-файлах отлично работает в bridge, поэтому я вижу, что они копируются и корректно применяются к файлу 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)
T Код работает нормально, он переносит файл XMP, переименовывает его правильно, и я вижу, что он был применен, однако, когда jpeg выводится в определенную папку, это делается так, как будто XMP никогда не был фактором.
Есть ли способ вывести файл jpeg, используя примененный XMP? Я пытался использовать параметры rawpy, чтобы попытаться максимально приблизиться к желаемому виду, но это просто неправильно.