1

Пакетная обработка raw-файлов

Darktable еще имеет одно достоинство – проявку можно провести в консоли. На первый взгляд преимущество не особое. Однако у многих пользователей возникает необходимость обработать множество файлов быстро и с минимальной или одинаковой обработкой. И результат проявки по качеству имеет второстепенную важность. Случай из реальной практики, который произошел несколько лет назад – риэлторская фирма отправила в командировку фотографа для съемки загородной недвижимости. Наснимал он много в RAW (ну если быть совсем точным, то в NEF). Записал файлы на DVD  диск и отдал заказчикам. Те несколько месяцев его не смотрели, потом глянули – увидели проблему. К тому времени их фотограф уехал в Африку то ли волонтером, то ли путешествовать. Агентство это в США, если что находилось, и надеюсь, находится.

И как всегда – теперь сроки горят, надо что то делать. Народ они экономный – сразу не полезут на биржи фриланса, а стараются по тематическим форумам, соц сетям поискать совета или исполнителя. Там я с ними и познакомился, договорился о оплате, выдал скрипт, сказали отработал 4.5 ГБ за 20 минут. Жаль не спрашивал не про конфигурацию компьютера, ни про железо. Заработал тогда неплохие деньги по соотношению время на работу – цена.

Скрипт был на bash, тогда Darktable для Windows существовал только в мечтах или планах разработчиков. Сейчас хочу выложить его на сайт, плюс показать версию для Windows.

Ну под Linux часть скрипта уже я описывал 4 года назад здесь, в статье Обработка файлов с помощью консольной команды darktable-cli. Здесь повторю и более подробно прокомментирую.

Вот сам скрипт, создавать и запускать его надо из директории, где расположены raw-файлы:

#!/bin/bash
mkdir JPG; #создаем подпапку с именем JPG
echo ″Start″;
echo -e ″Hi, please you input raw file extension: \c ″ #Здесь выводится предложение написать расширение Вашего raw-файла
read ext # скрипт считывает введенные данные
for filename in *.$ext; #пошел цикл с перебором файлов с расширением, которое мы ввели
do
echo ″Converting file $filename″; # вывод сообщения о начале конвертации
darktable-cli ″$filename″ ″/JPG/${filename%.*}.jpg″; #консольная команда Darktable
echo ″Converting file $filename done″; #сообщение, какой файл в это время редактируется
done; #конец программы

Ну вот так, коротко. Конечно, на DVD-диске команды были чуть другие, надо прописать пути, плюс Darktable 5 лет назад без созданного xmp-файла не хотел конвертировать, приходилось сначала копировать с помощью rsync (чтобы сохранить метаданные) raw-файл в директорию tmp, а там уже применять darktable-cli к файлу, затем его же удалять, чтобы место не занимал. Здесь же скрипт представлен в более универсальном виде, знатоки bash могут его модифицировать по своему желанию. Параметры darktable-cli уже описывал, повторяться не буду, замечу что в таком варианте применяет три модуля – ориентацию, резкость и базовую кривую.

В Windows  консольное приложение darktable-cli работает аналогично. Это применимо к параметрам. А остальное чуть посложнее. Есть несколько тонкостей:

  • Путь до программы не добавляется в переменную PATH. Вернее добавить то можно, но не видит Windows его, поэтому в командах приходится его прописывать целиком, ниже поймете о чем это.
  • Скрипт можно уместить было бы в одну строчку, и не создавать бат-файл, а просто открывать командную строку и вводить команду там. Но это уже не дает сделать настройка безопасности в ядре win-систем, запустить консольную команду с циклом не получится
  • Антивирусы пока “не любят” Darktable, поэтому команда может блокироваться, надо добавлять его каталог в исключения.

Ну в принципе все это мелочи, просто про них надо знать. Код батника выглядит так:

echo off
chcp 1251
FOR /R %%i in (*.RAW) do (
echo %%i
″C:\Program Files\darktable\bin\darktable-cli.exe″ %%i %%~ni.jpg
)
PAUSE

Ну вместо RAW надо написать свое расширение. Батник надо cкопировать в директорию с цифровыми негативами, туда же конвертируются наши JPEG.  Может попозже напишу как прописать пути и сделать ввод данных по аналогии с bash-скриптом, пока что то не получается, хотя без использования darktable-cli.exe (например простое copy) все работает. Ну это поправим со временем. Так же в выводе выходит сообщение

(darktable-cli.exe:5884): Gtk-WARNING **: gtk_disable_setlocale() must be called before gtk_init()

но на результат это не влияет, файлы конвертируются быстро, скорость за зависит от мощности компьютера. С мощными видеокартами и включенной поддержкой OpenSl конвертация проходит в среднем в три раза быстрее. А быстрее чего и как настроить на подобное OpenСl в Darktable мы расскажем в следующей статье раздела Полезное.

Замечание – в представленном коде надо исправить кавычки, поставить обычные двойные в любой раскладке – иначе скрипты будут выдавать ошибку.

 

1 комментарий к “Пакетная обработка raw-файлов”

Обсуждение закрыто.