Дата на фото

Автор B@F, 11 Ноября 2013, 08:16

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

B@F

11 Ноября 2013, 08:16 Последнее редактирование: 12 Декабря 2013, 09:56 от B@F
Всем привет.

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


Решено смотри сообщение http://linuxforum.kz/index.php/topic,5848.msg28513.html#msg28513

На всякий случай копирнул код скрипта [attachurl=1]
Поправьте, если я ошибаюсь, буду тока рад.

Ramzes

11 Ноября 2013, 11:59 #1 Последнее редактирование: 11 Ноября 2013, 12:17 от Ramzes

sotrud_nik


B@F

Цитата: Ramzes от 11 Ноября 2013, 11:59
Gwenview->Print master->Signature-> Дата и время из EXIF

Открыл фотки, выделил, но так и не нашел Print master  :unsure:
Цитата: Ramzes от 11 Ноября 2013, 11:59
Скрипт пакетной обработки для впечатывания даты и времени в фотографии

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

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

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

Так и не нашел как в ней можно вывести дату на картинку, хотя само приложение весьма мощное, но ведь тоже не графика.
Поправьте, если я ошибаюсь, буду тока рад.

Ramzes

11 Ноября 2013, 23:57 #4 Последнее редактирование: 12 Ноября 2013, 12:49 от Ramzes
Gwenview->Модули->Изображения->Мастер печати->Подпись-> Дата и время из EXIF
Данная опция вписывает дату и время непосредственно в распечатку фото, сама фотография (на жестком диске) не видоизменяется


sotrud_nik

Получаем дату съемки

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

B@F

В общем я остановился на FastStone Image Viewer через wine  :huh:
Поправьте, если я ошибаюсь, буду тока рад.

hedgeven

Позор же, "домохозяйка-эдишн", где инженерный дух?
Jah will give us everything...

B@F

Цитата: hedgeven от 08 Декабря 2013, 20:38
Позор же, "домохозяйка-эдишн", где инженерный дух?

Наверно имеется ввиду не Linux way. Согласен позор, но
1. Что лучше тратить много времени на проставлении даты или фотографировать?
2. Жена достала, что я долго сижу за этим делом.
3. Мне нужен был простой не замысловатый способ, что бы да же жена могла сделать.
4. В линуксе чего тока нет, а с простыми вещами засада.
Поправьте, если я ошибаюсь, буду тока рад.

hedgeven

08 Декабря 2013, 22:31 #9 Последнее редактирование: 09 Декабря 2013, 15:07 от Yuriy_Y
Может быть проще, написать скрипт с применением указанных выше инструментов, и назначить его на одну кнопочку?

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


Сохраняете этот код в convert.sh, даете ему права на исполнение. В качестве первого аргумента можно передать путь до каталога с фото. Если запустить просто без аргументов, то отработает в текущем каталоге. Пользуйтесь, дорабатывайте.
Ну, а nautilus scripts и/или zenity, надеюсь, сами освоете.
Jah will give us everything...

B@F

Мозг, мне до такого далеко.  -_-
Есть пару вопросов: зачем 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 скрипт работает на ура. Спасиб.
Поправьте, если я ошибаюсь, буду тока рад.

hedgeven

09 Декабря 2013, 12:40 #11 Последнее редактирование: 09 Декабря 2013, 13:30 от hedgeven
Две строки, чтобы сделать обводку. В первой рисуется "подложка", во второй сам текст. Просто я заметил, что без обводки белый текст на светлом фоне плохо видно. Для увеличения обводки, можно увеличить strokewidth, например до 5.

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

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

При желании можно модифицировать, чтобы скрипт принимал список файлов для выполнения действий.
Jah will give us everything...

B@F

09 Декабря 2013, 13:44 #12 Последнее редактирование: 09 Декабря 2013, 13:50 от B@F
Цитата: 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


И да хотел спросить, вот есть фотки портретные и альбомные(наверно так называется). Если фотка альбомная то все нормально, а если портретная то дата появляется в верхнем с права. как бы так сделать, что бы всегда в одном месте в не зависимости от ориентации изображения.
Поправьте, если я ошибаюсь, буду тока рад.

hedgeven

Внес еще исправления в скрипт, прошу полностью обновить у себя. Так же вынес цвет и размер шрифта в переменные. Исправил проблему с ориентацией опцией -auto-orient.
Jah will give us everything...

B@F

Цитата: hedgeven от 09 Декабря 2013, 14:30
Так же вынес цвет и размер шрифта в переменные.

Чего не вижу того не вижу, ткни носом.
Поправьте, если я ошибаюсь, буду тока рад.

hedgeven

09 Декабря 2013, 14:54 #15 Последнее редактирование: 09 Декабря 2013, 14:59 от hedgeven
Прошу прощения, старый вариант скопировал :)
Вставил ссылку на Gist, там как-то нагляднее.
Jah will give us everything...

B@F

Внес изменения в первый пост и закрепил его на верху.
Поправьте, если я ошибаюсь, буду тока рад.