У меня была великолепная фотография женщины, которую я сфотографировал под странным, сложным освещением (натриевые и ртутные лампы). Отличная улыбка, отличная фокусировка, отличная картинка, за исключением пути, цвета.
Я в течение часа манипулировал с темпом / оттенком в Adobe Camera Raw, но безрезультатно. Я написал программу для взлома XMP-файла коляски, меняющего температуру и затем создающего символическую ссылку на исходный NEF с именем, параллельным файлу XMP.
Это НЕ так причудливо и технически неправильно, как приведенный выше ответ, но вместо этого бросает огромное количество ЦП на проблему и дает некоторые (возможно) интересные результаты.
Это создает кучу ссылок на файлы .NEF и настоящий файл .XMP для каждой из них. Просто скопируйте настоящий файл со списком nef / xmp, чтобы клонировать его в тестовый каталог, и установите min / max temp и dif_temp (Кельвины между клонами). Другой цикл может быть вставлен для изменения значения оттенка с постоянной Кельвина, но сгенерированные файлы будут умножены на количество оттенков.
Запустите файл Photoshop -> scripts -> image_processor, укажите его в этом каталоге, и он создаст настоящий tif / jpg / что угодно для каждой ссылки с заданной цветовой температурой.
Этот код является Грязным, Уродливым Хаком, и его запуск, вероятно, растопит ваш процессор, привлекая шариковую молнию и пчел-убийц в непосредственной близости. Нет гарантии, само собой разумеется.
Требуется Perl (обязательно используется ежедневно) и mklink (может присутствовать).
sub color_temp_experiment() {
$nef = '6s-2014.1004-237695.acl.nef';
$xmp = '6s-2014.1004-237695.acl.xmp'; # crs:Temperature="6000"
$min_temp = 7800;
$max_temp = 9000;
$dif_temp = 200; # Difference in temp per loop.
$xd = `cat $xmp`; # Xmp Data;
($base = $nef) =~ s/\.nef//; # Basename common to both nef and xmp.
$ii = -1;
for($temp = $min_temp; $temp <= $max_temp; $temp += $dif_temp) {
$ii++;
$link = $base . ".$temp" . 'k.nef'; # Abuse Kelvins with lower case.
$xfn = $base . ".$temp" . 'k.xmp'; # Abuse Kelvins with lower case.
if(-f $link) {
print("Found FILE (s/b sym link!) $link. Next!\n"); # This prints!
next;
}
$cmd = "mklink $link $nef";
printf("$ii) Cmd = $cmd\n");
$sto = `$cmd`;
unless(-f $link) {
print("ERROR! Sym link $link not found!\n StdOut=<<$sto>>\n\n");
exit;
}
($xt = $xd) =~ s/crs:Temperature="\d+/crs:Temperature="$temp/ms;
open(O, ">$xfn");
print(O "$xt");
close O;
}
}