Нытьё (введение в суть проблемы)
Случилось так, что волею судеб у меня появился iPad. Не iPad 2, а простой iPad без фотокамеры и толстый. Моделька получилась 16Gb, WiFi, GSM. Вполне удобно для чтения почты и ползания по сайтам. Тем более, что для просмотра flash можно купить Puffin за смешные 99 центов. Но прекращаю ныть и перехожу ближе к сути.
Помимо всего прочего мне показалось, что iPad удобно использовать для просмотра фотографий. Но всё упирается в объём встроенной памяти. На моём экземпляре всего 16 гигабайт, что совсем мало для фотографий. Можно, конечно, пережимать изображения под размер экрана 1024x768. Но это тоже не выход. Во-первых, надо делать лишние телодвижения — пережимать. Во-вторых, фотографии надо заливать на iPad. В-третьих, что делать если захочется распечатать фотографию? Смотрел-смотрел на экране iPad, или показывал родственникам, или ещё что, и захотелось отправить фотографию в печать (таких сервисов ведь много в сети). Печатать 1024x768 не вариант, а найти оригинальную фотографию может быть затруднительно. Особенно, если ты в гостях, а фотографии лежат на домашнем компьютере. Есть выход и из этой ситуации — использовать фотохостинг.
Но не всё так просто, продолжаю ныть. Потерпите, ещё немного. Для iPad'а есть приложения для работы с фотохостингами. Можно вполне комфортно работать с Picassa Web и т.п. сервисами. Но там опять всплывают ограничения и неудобства. Во-первых, бесплатных фотохостингов нет, т.е. за нормальный объём сетевого пространства придётся хорошо заплатить. И платить на регулярной основе. Во-вторых, фотохостинг будет расположен вне дома и заливать туда постоянно и много может быть тоже утомительно. Вот тут я и перехожу к полезной части этой заметки. Да, тут я твёрдо решил организовать фотохостинг на своём домашнем сервере.
Фотохостинг для iPad на базе Pipho
После непродолжительного гугления на предмет всяких галерей на PHP и т.п. скриптов, стало понятно, что надо поискать скрипты именно для iPad. И такой нашёлся сразу — JAIPHO. Это javascript, который отлично работает с iPad и позволяет пролистывать фотографии привычным для пользователей iPad способом. Чтобы он успешно работал на сервере лучше всего использовать его не отдельно, а в PHP-обвязке — Pipho.
Установка этого хозяйства на сервер крайне простая и хорошо описана по ссылке выше. Настройка web-сервера несколько выходит за рамки этой заметки, так что эту часть я опущу. Но на всякий случай кратко опишу установку Pipho:
- Скачиваем архив pipho-1.02.00.zip с сайта Pipho и распаковываем его на сервере.
- Устанавливаем права доступа на каталог с фотографиями:
chmod -R 777 photos
После этих нехитрых манипуляций можно зайти браузером на сервер и посмотреть парочку тестовых фотографий.
Добавление своих фотографий на хостинг
Добавление фотографий на хостинг основанный на Pipho дело нехитрое:
- Создаём подкаталог в photos.
- Копируем туда фотографии.
- Создаём файл _gallery.txt с описанием фотоальбома. iPad русские символы понимает в кодировке UTF-8.
- Можно добавить описание к любой фотографии, если создать файл с именем фотографии, но с расширением .txt.
После этого надо зайти в альбом с фотографиями, подождать и начать материться. Т.к. Pipho при первом обращении к новому фотоальбому создаёт миниатюры фотографий и это может занять довольно много времени. На страничке самого Pipho описаны методы борьбы с ошибками, которые возникают на этом этапе. Но тут как раз я и решил немного оптимизировать процесс.
Зачем мучить сервер и ждать, когда создадутся миниатюры? Ведь можно просто скопировать на сервер уже подготовленный каталог. Для этой цели я написал небольшой скрипт, который паразитирует на пакете ImageMagick и вполне сносно справляется со своей прямой обязанностью:
#!/bin/sh
RESIZED=resized
SSIZE1=1024
SSIZE2=480
TSIZE=75
if [ ! -d ${RESIZED} ] ; then
mkdir ${RESIZED}
fi
for f in *.JPG *.jpg ; do
fs=${RESIZED}/${f%.*}-slide-${SSIZE1}.${f##*.}
if [ ! -f ${fs} -a -f ${f} ] ; then
mogrify -resize ${SSIZE1} -write ${fs} ${f}
fi
fs=${RESIZED}/${f%.*}-slide-${SSIZE2}.${f##*.}
if [ ! -f ${fs} -a -f ${f} ] ; then
mogrify -resize ${SSIZE2} -write ${fs} ${f}
fi
fs=${RESIZED}/${f%.*}-thumb-${TSIZE}.${f##*.}
if [ ! -f ${fs} -a -f ${f} ] ; then
mogrify -resize ${TSIZE}x${TSIZE}! -write ${fs} ${f}
fi
done
Скрипт вызывается в каталоге с фотографиями и создаёт все необходимые миниатюры для iPad и iPhone.
В результате
А в результате получается отличный фотохостинг, установленный на домашнем сервере. Дома по WiFi просмотр фотографий очень удобен, тормозов не заметил. Удалённо тоже вполне можно работать, и если в гостях связь осуществляется по 3G, то показать фотографии с дачи или с выставки будет не стыдно. Вот, пример того, как это работает у меня (прошу прощения за низкое качество видео):