Содержание: (спрятать)
Идея заключается в следующем: спроектировать автоматическую цепочку от серийной съемки с фотокамеры до публикации в сети фотоальбома в реальном времени. Используемая аппаратура - цифрозеркалка (Canon 450D), ноутбук класса нетбук (ASUS Eee PC 701, самая первая модель), мобильный телефон. Сети нет.
В настоящее время задача видится и разбивается на следующие полностью автоматизированные подзадачи:
- серийная съемка (старт и параметры с ноутбука) - done
- ресемплинг и копирование на ноутбук (возможно - создание превьюшек) - in progress
- загрузка на сайт по FTP - инкрементальный бекап - in progress
- "подхват" на сайте и имплементация в тело станицы - автообновление страницы?
1. Серийная съемка
Существует родной Canon'овский софт для аппарата, который в том числе, позвляет а) управлять аппаратом с компьютера, б) сгружать с него фотографии, в) запускать серийную съемку и г) делать кучу всякой ерунды, которая человеку, покупающему топовую модель любительской аппаратуры, по идее, не должна быть нужна. Оставим в стороне находки Canon'овских маркетологов и возьмем п. в) который (вместе с а)) умещается в одной небольшой утилитке весом 20 Mb.
На нетбуке утилитка, однако, отказалась запускаться, сославшись на смехотворное разрешение монитора (600x480). Я согласен, смешно, но что-то делать надо.
Подключаем внешний монитор, расширяем на него рабочий стол, далаем внешний экран основным, кликаем OK... Как бы не так! Виндовый драйвер чешет в затылке, думает "как же этот юзер справится с ситуацией, если с ноутом придется идти на работу? не понесет же он монитор с собой? нет, не справится: пожалуй, отключу я внешний монитор на всякий случай!" И отключает!
На этот случай пришлось взять в руки родную утилиту карты (кажется Intell), которая посчитала меня достойным внешнего монитора, вот: у меня есть монитор с большим разрешением, инсталляция пошла.
Инсталляция: ах! ах! как же я без фреймворка! придется ста-авить...
Напомню, что сама утилитка весит сдержанные 20 Mb, а весь системный диск моей крохотной машинки - 3 Gb. При этом мне никто не предлагает поставить Framework рядом на пустой выносной диск D:, а норовит упихать все на системный. Ну да, разве можно предположить, что в XXI веке может нехватать места на такую ха-ха-ха, как четверть гигабайта?
Что ж, проще отдаться: лезу в Download системы и тру там все, что выглядит неразмерным. (Кстати, стандартный механизм апгрейда в данных аскетичных системных условиях вызывает приступы клаустрофобии.)
Установка завершена. Быстрый тест - фотоаппарат мерно щелкает пока я скручиваю козью ногу из обрывка газеты "Компьютеризация на марше" ставлю чай. Шаг первый сделан.
Дополнение. В утилите серийной съемки есть опция выгрузки на диск. Подключаем ее - и фотографии планомерно сгружаются в выбранную директорию компьютера.
2. Ресайз на лету
Закачать полноформатные картинки по FTP проблематично даже при хорошем канале. А что говорить о мобильно-телефонном?! Поэтому перед загрузкой нужно уменьшить картинки до приемлемого транспортабельного размера, скажем, вписать их в стадартные 800x600, и сделать это на лету.
Все привыкли пользоваться для ресайза средой Photoshop или, в крайнем случае, утилитами-просмотрщиками. Но необходимость обрабатывать изображения на лету отсылает нас к командной строке. Как выяснилось, отраслевой стандарт обработки изображений - и в частности, с командной строки - ImageMagick . Это свободный мультиплатформенный пакет для программирования, но его можно и просто поставить на компьютер (а можно и на сервер) и запускать с командной строки.
Итак, скачиваю установку, установливаю, тестирую. Замеченная фича: как всякая приличная программа, ImageMagick не работает с файлами в папках "дурных" названий. Ну и я не работаю, так что беды здесь нет. Консольная команда для ужимания картинки в нужный прямоугольник выглядит не просто, а очень просто:
convert -resize 800x600 xxx.jpg yyy.jpg
Осталось написать пакетный файл и запустить его в планировщике. Для этого сгодится .bat-файл примерно такого вида (с точностью до опечаток):
for %%f in (*.jpg) do convert -resize 800x600 %%f new_path\%%f
delete *.jpg
(скрипт пережмет все файлы *.jpg, положит их в new_path и удалит исходные, чтобы не мешались на следующем проходе)
3. Загрузка на сайт
Для загрузки на сайт решено использовать инкрементальный бэкап. Мне посоветовали бесплатную утилитку Cobian ( Cobian Backup ); я ее скачал, без особенных проблем установил и настроил. Все заработало если и не с полоборота, то достаточно скоро.
В режиме тестирования фотоппарат раз в пять минут делает снимок, а Cobian Backup раз в пять минут шлет файл на папку на веб-сервере. Подводных камней невидно.
Правда, пока все работает через быструю домашнюю сеть, выход наружу по Стриму.
Интереснее прямо на сайте формировать php-скриптом. Потому что задача довольно общая и решение еще не раз в жизни понадобится!