1. Для чего это может пригодится
Существует несколько причин, которые могут вас побудить разместить картинку высокого разрешения у себя на сайте.
К наиболее типичными можно отнести:
- групповая фотография, например фото выпуска, где хочется рассмотреть каждого
- фотографии предметов искусства, где важна каждая деталь, например проект Google Art
- карты, как современные, так и исторические карты, например проект Карты Петербурга
- исторические документы, например проект RSIM
- панорамы местности, в том числе и круговые панорамы
- большие планы, где хочется рассмотреть подробно детали, например планы расследований сайт Навального
- чертежи и схемы
2. Чем же не подходит тэг IMG
Тэг IMG подходит для картинок, размер которых соизмерим с размером блока для отображения их на сайте.
При отображении больших картинок, используя тэг IMG мы сталкиваемся с следующими трудностями:
- большая нагрузка на сервер при отдаче картинки
- большая нагрузка на сеть при передаче картинки
- большое время ожидания загрузки картинки
- большая нагрузка на браузер при отображении картинки
- невозможность просмотреть конкретную область картинки в увеличенном масштабе
3. Как же это работает на других сайтах
Все проекты, которые отображают большие картинки используют схожий подход отображений подобных картинок:
- берем картинку, например такую
- оригинальная большая картинка сохраняется в разных разрешениях вплоть до самого маленького
- каждый из сохраненных вариантов картинки разрезается на куски одинакового размера, так называемые тайлы
- компонент, занимающийся отображением картинки определят текущий уровень детализации и область просмотра и отображает только соответствующие тайлы
4. Делаем сами
Один из самых простых способов реализации – использование готового компонента.
Один из самых популярных компонентов zoomify.
Компонент платный, но у есть экспресс версия, бесплатная и доступная для скачивания с официального сайта
В скаченном архиве (win) вы найдете следующие файлы:
- Zoomify Converter.exe – компонент для подготовки исходной картинки и нарезки её на тайлы
- ZoomifyViewer.swf – компонент для отображения на сайте
- TemplateWebPage.htm – пример использования компонента
- Запускаем программу Zoomify Converter.exe, выбираем в ней исходную картинку
- Размещаем папку с тайлами, созданными на предыдущим этапе, у себя на сайте
- Размещаем файл ZoomifyViewer.swf у себя на сайте
- Создаем страничку со следующим кодом
<div id="zoomExample"> <embed FlashVars="zoomifyImagePath=[путь к папке с тайлами]" src="[путь к файлу ZoomifyViewer.swf]" width="[ширина]" height="[высота]"></embed> </div>
Параметр | Описание |
---|---|
zoomifyImagePath | абсолютный или относительный путь к папке с тайлами |
src | абсолютный или относительный путь к файлу ZoomifyViewer.swf |
width | ширина блока с компонентом для просмотра, возможны значений в процентах или в пикселях, например "100%" или "640px" |
width | высота блока с компонентом для просмотра, возможны значений в процентах или в пикселях, например "50%" или "480px" |
В итоге получаем вот такой результат:
Работающий пример можно скачать тут.
У приведенного решения есть как плюсы, так и минусы.
Плюсы:
- простота создания "подготовленного изображения"
- простота использования
- компонент бесплатный
- компонент написан на FLASH, поэтому не будет работать на мобильных устройствах, таких как iPhone, iPad и пр. У zoomify есть компонент HTML5, который решает эту проблему, но он платный.
- "подготовленное изображение" – представляет из себя большое количество файлов, что не очень удобно.
- невозможность расширения функциональности компонента.
В будущих статьях на данную тему будут рассмотрены следующие вопросы:
- отображение картинки высокого разрешения на мобильных устройствах
- альтернативные способы создания "подготовленного изображения"
- Image server – назначение и примеры использования