dastapov: (Default)
[personal profile] dastapov
Disclaimer: весь этот расказ напоминает известный анекдот о том, как лечить головную боль. От которой нужно приянть аспирин, от него заболит живот, его лечат фесталом, от которого болят почки, которые надо лечить .... И т.д., пока круг не замыкается на головной боли ...

У меня есть цифровой фотоаппарат. Очень полезная штука для фотографий типа "семья синюшных утопленников с красными глазами и обрезаными ногами дружно лопает манную кашу" (с)ru.photo.digital. Наснимал, слил по шнурки, и вперед - показывать всем жаждущим и страждущим. Но есть одно "но" - снимки-landscape перед показом не мешало бы развернуть.

Очень быстро выяснилось, что использование ImageMagic, gimp, PhotoShop и т.п. програм имеет один большой отрицательный эффект - все они стремятся распаковать JPEG в некоторое внутреннее представление, повернуть и запаковать по-новой. Как правило, с гораздо более низким quality, чем у оригинальной картинки. Кроме того, безвозвратно теряется драгоценная EXIF info.

Решением стал пакет libjpeg-mmx-progs, позволяющий делать вращение JPEG-а путем манипуляции с матрицей коэффициентов DCT, без распаковки картинки. Правда, терялась EXIF инфо. От этого спасла утилита jhead, позволяющая сохранять EXIF info на время работы указаной утилиты, а потом возвращать его обратно.

Весь процесс оформился в виде двух скриптов - для вращения против часовой стрелки и по часовой:

jpeg-rot-90:
#!/bin/bash
jhead -cmd "jpegtran -rotate 270 &i > &o" "$@"


jpeg-rot+90:
#!/bin/bash
jhead -cmd "jpegtran -rotate 90 &i > &o" $*


Если мне надо снять "вертикальный" кадр, я всегда поворачиваю аппарат "против часовой стрелки". Таким образом, мой workflow по повороту фоток крайне прост - с помощью однократного прохода по thumbnail-ам фотографий я могу получить список "неправильных" снимков, которые затем автоматически развернуть.

К моему крайнему неудовольствию, выяснилось, все прочие люди при съемке стремятся повернуть фотоаппарат "в другую сторону", и, если я просил кого-то снять меня на фоне знаменитого Запупыринского Златоглавого Собора, то потом мне придется поворачивать эту фотографию "в другую сторону", и, как легко догадаться, отнюдь не в один проход.

Поскольку для просмотра картинок я пользуюсть преимущественно вьювером по имени feh, который умеет по нажатию hot key обрабатывать текущую програму указаной утилитой, я приспособил все те же скрипты к нему. Получилось вот что:

feh-rotate-left:
#!/bin/bash
 feh -t -A "jpeg-rot-90 '%f'" -E 100 -y 100 "$@"


feh-rotate-right:
#!/bin/bash
feh -t -A "jpeg-rot+90 '%f'" -E 100 -y 100 "$@"


После того, как все фотографии развернуты в нужную сторону, можно сгенерировать с них "контакты":

feh-make-index:
feh --index -s -y 200 -E 200 -O index200.jpg `find "$@" -type f`

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags