Linux Forum Казахстан

Медиа => Графика => Тема начата: B@F от 11 Ноября 2013, 08:16

Название: Дата на фото
Отправлено: B@F от 11 Ноября 2013, 08:16
Всем привет.

Была у меня мыльница, делала хорошие снимки и сама проставляла дату на фотках. Недавно купил зеркалку, лет пять хотел, и эта зеркалка не делает дату на фотках. Теперь нужна программа, которая может проставить дату на фото у кучи фотографий. Дяля винды нашел кучу, правда все с кряками или ключами, а вот для линукса чет не могу. Кто знает или примерно подскажите прогу не GIMP конечно.


Решено смотри сообщение http://linuxforum.kz/index.php/topic,5848.msg28513.html#msg28513 (http://linuxforum.kz/index.php/topic,5848.msg28513.html#msg28513)
(http://storage5.static.itmages.ru/i/13/1208/h_1386528843_4750411_482afb18de.png)
На всякий случай копирнул код скрипта [attachurl=1]
Название: Re: Дата на фото
Отправлено: Ramzes от 11 Ноября 2013, 11:59
Gwenview->Print master->Signature-> Дата и время из EXIF
Скрипт пакетной обработки для впечатывания даты и времени в фотографии (http://alexvoronkov.wordpress.com/2011/05/22/%D0%B2%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D1%82%D1%8B-%D0%BD%D0%B0-%D1%84%D0%BE%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%D1%85-%D0%B2-linux/)
Название: Re: Дата на фото
Отправлено: sotrud_nik от 11 Ноября 2013, 12:10
что-то из набора Imagemagick должно уметь

http://www.multipole.org/discourse-server/viewtopic.php?f=1&t=20213
Название: Re: Дата на фото
Отправлено: B@F от 11 Ноября 2013, 23:06
Цитата: Ramzes от 11 Ноября 2013, 11:59
Gwenview->Print master->Signature-> Дата и время из EXIF

Открыл фотки, выделил, но так и не нашел Print master  :unsure:
Цитата: Ramzes от 11 Ноября 2013, 11:59
Скрипт пакетной обработки для впечатывания даты и времени в фотографии (http://alexvoronkov.wordpress.com/2011/05/22/%D0%B2%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D1%82%D1%8B-%D0%BD%D0%B0-%D1%84%D0%BE%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%D1%85-%D0%B2-linux/)

Чет там скрипт такой, что я ни че в нем не понял, ни вводные данные куда писать, хотя обычно $1 $2 $3, ни что он потом делает, а тот небольшой набор переменных вообще не впечатляет. Да к тому же работая с графикой охота работать из графики.

Цитата: sotrud_nik от 11 Ноября 2013, 12:10
что-то из набора Imagemagick должно уметь

http://www.multipole.org/discourse-server/viewtopic.php?f=1&t=20213

Так и не нашел как в ней можно вывести дату на картинку, хотя само приложение весьма мощное, но ведь тоже не графика.
Название: Re: Дата на фото
Отправлено: Ramzes от 11 Ноября 2013, 23:57
Gwenview->Модули->Изображения->Мастер печати->Подпись-> Дата и время из EXIF
Данная опция вписывает дату и время непосредственно в распечатку фото, сама фотография (на жестком диске) не видоизменяется

Название: Re: Дата на фото
Отправлено: sotrud_nik от 12 Ноября 2013, 07:24
Получаем дату съемки

identify -format "%[EXIF:DateTimeOriginal]" 123.jpg

Конвертируем с добавлением строчки даты

convert 123.jpg -pointsize 20 -fill black -gravity northwest -annotate +0+0 "Date: 2013:07:06 13:42:42" 123.png
Название: Re: Дата на фото
Отправлено: B@F от 08 Декабря 2013, 17:23
В общем я остановился на FastStone Image Viewer через wine  :huh:
Название: Re: Дата на фото
Отправлено: hedgeven от 08 Декабря 2013, 20:38
Позор же, "домохозяйка-эдишн", где инженерный дух?
Название: Re: Дата на фото
Отправлено: B@F от 08 Декабря 2013, 21:53
Цитата: hedgeven от 08 Декабря 2013, 20:38
Позор же, "домохозяйка-эдишн", где инженерный дух?

Наверно имеется ввиду не Linux way. Согласен позор, но
1. Что лучше тратить много времени на проставлении даты или фотографировать?
2. Жена достала, что я долго сижу за этим делом.
3. Мне нужен был простой не замысловатый способ, что бы да же жена могла сделать.
4. В линуксе чего тока нет, а с простыми вещами засада.
Название: Re: Дата на фото
Отправлено: hedgeven от 08 Декабря 2013, 22:31
Может быть проще, написать скрипт с применением указанных выше инструментов, и назначить его на одну кнопочку?

Вот мой говнокод пример, основанный на рекомендациях выше:
https://gist.github.com/hedgeven/7869330

(http://storage5.static.itmages.ru/i/13/1208/h_1386528843_4750411_482afb18de.png)
Сохраняете этот код в convert.sh, даете ему права на исполнение. В качестве первого аргумента можно передать путь до каталога с фото. Если запустить просто без аргументов, то отработает в текущем каталоге. Пользуйтесь, дорабатывайте.
Ну, а nautilus scripts и/или zenity, надеюсь, сами освоете.
Название: Re: Дата на фото
Отправлено: B@F от 09 Декабря 2013, 11:56
Мозг, мне до такого далеко.  -_-
Есть пару вопросов: зачем 2 строчки:
-stroke '#000C' -strokewidth 2 -annotate +50+50 %[exif:DateTimeOriginal] \
  -stroke  none -fill white -annotate +50+50 %[exif:DateTimeOriginal] ${output_dir}/${f}

Одной последней не достаточно?
И скрипт не обрабатывает файлы имеющие в своем имени пробелы
/usr/share/nautilus-scripts/date_to_foto.sh
convert.im6: unable to open image `2013-12-07': Нет такого файла или каталога @ error/blob.c/OpenBlob/2638.
convert.im6: no decode delegate for this image format `2013-12-07' @ error/constitute.c/ReadImage/544.
convert.im6: no images defined `output/2013-12-07' @ error/convert.c/ConvertImageCommand/3044.
convert.im6: unable to open image `16-02-27.JPG': Нет такого файла или каталога @ error/blob.c/OpenBlob/2638.
convert.im6: no images defined `output/16-02-27.JPG' @ error/convert.c/ConvertImageCommand/3044.

Скорее всего надо где-то ковычки поставить тут к примеру for f in `ls $"{file_mask}"` но я в этом не селен. А так ваще круто, через nautilus скрипт работает на ура. Спасиб.
Название: Re: Дата на фото
Отправлено: hedgeven от 09 Декабря 2013, 12:40
Две строки, чтобы сделать обводку. В первой рисуется "подложка", во второй сам текст. Просто я заметил, что без обводки белый текст на светлом фоне плохо видно. Для увеличения обводки, можно увеличить strokewidth, например до 5.

Для решения проблемы с пробелами в именах есть IFS. Смотрите исправленный вариант выше.

Еще немного улучшил проверку на передаваемые параметры.

При желании можно модифицировать, чтобы скрипт принимал список файлов для выполнения действий.
Название: Re: Дата на фото
Отправлено: B@F от 09 Декабря 2013, 13:44
Цитата: hedgeven от 09 Декабря 2013, 12:40
IFS

Да работает  :unsure: но чет я ваще в ступаре что это такое и как оно работает. Я думал ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, а потом оно куда-то вставляется. Но тут оно не куда не вставляется и при этом работает.


Мой вариант, отличается только размером шрифта 50 и цветом orange, ну я так привык
#!/bin/bash
[[ -z $1 ]] && input_dir=`pwd` || input_dir=$1
file_mask="*.JPG"
font_name="DejaVu-Sans-Book" # see all available variants: convert -list font|grep Font
output_dir="date_to_foto"

cd ${input_dir}
mkdir -p ${output_dir}
IFS=$'\n'
for f in `ls ${file_mask}`
do
  convert ${f} -font ${font_name} -pointsize 50 \
  -stroke '#000C' -strokewidth 2 -annotate +50+50 %[exif:DateTimeOriginal] \
  -stroke  none -fill orange -annotate +50+50 %[exif:DateTimeOriginal] ${output_dir}/${f}
done


И да хотел спросить, вот есть фотки портретные и альбомные(наверно так называется). Если фотка альбомная то все нормально, а если портретная то дата появляется в верхнем с права. как бы так сделать, что бы всегда в одном месте в не зависимости от ориентации изображения.
Название: Re: Дата на фото
Отправлено: hedgeven от 09 Декабря 2013, 14:30
Внес еще исправления в скрипт, прошу полностью обновить у себя. Так же вынес цвет и размер шрифта в переменные. Исправил проблему с ориентацией опцией -auto-orient.
Название: Re: Дата на фото
Отправлено: B@F от 09 Декабря 2013, 14:45
Цитата: hedgeven от 09 Декабря 2013, 14:30
Так же вынес цвет и размер шрифта в переменные.

Чего не вижу того не вижу, ткни носом.
Название: Re: Дата на фото
Отправлено: hedgeven от 09 Декабря 2013, 14:54
Прошу прощения, старый вариант скопировал :)
Вставил ссылку на Gist, там как-то нагляднее.
Название: Re: Дата на фото
Отправлено: B@F от 12 Декабря 2013, 09:57
Внес изменения в первый пост и закрепил его на верху.