Предустановки и преобразования XMP-изображений - PullRequest
0 голосов
/ 06 января 2020

Я регулярно работаю с большим количеством своих фотографий. Я пытаюсь применить стандартную предустановку 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, чтобы попытаться максимально приблизиться к желаемому виду, но это просто неправильно.

...