Как стать автором
Обновить

Фотохостинг для iPad на собственном сервере

Время на прочтение3 мин
Количество просмотров4.7K

Нытьё (введение в суть проблемы)


Случилось так, что волею судеб у меня появился 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, то показать фотографии с дачи или с выставки будет не стыдно. Вот, пример того, как это работает у меня (прошу прощения за низкое качество видео):

Теги:
Хабы:
Всего голосов 35: ↑29 и ↓6+23
Комментарии25

Публикации