Назад | Перейти на главную страницу

Серверный продукт для изменения размера, обрезки и кеширования изображений в реальном времени

Я изучаю, какие существуют продукты, которые позволят вам запрашивать изображения через HTTP API в произвольных размерах изображений. Сервер будет находиться за CDN, но все равно должен будет иметь возможность обрабатывать значительный объем трафика и, возможно, балансировать нагрузку.

Мне было поручено написать такую ​​услугу, но я хотел проявить должную осмотрительность, чтобы увидеть, какие коммерческие решения или решения с открытым исходным кодом существуют. Google не особо помог. Это может быть потому, что я искал неправильный термин.

Сторонние сайты и сервисы исключены из-за корпоративной политики.

Вы можете использовать ImageMagick с php / perl / python. Это позволит вам изменить размер изображения. Единственная загвоздка в том, что в идеале вы хотите кэшировать изображение.

Чтобы сделать кеш изображений дружественным, вам нужно будет перенаправить на уникальный URL-адрес и сохранить состояние для каждого вызова перенаправления.

пример.

http://example.com/resize/image.php?image=example.jpg&width=640&height=320 который изменяет размер example.jpg. Чтобы это было кешировано, image.php должен возвращать перенаправление URL. http://example.com/resize/static/example640x320.jpg

Для второго URL-адреса убедитесь, что у вас установлены правильные заголовки срока действия, чтобы CDN мог его кэшировать. Но вы также должны поддерживать отображение
http://example.com/resize/image.php?image=example.jpg&width=640&height=320 к http://example.com/resize/static/example640x320.jpg
потому что при каждом запросе этого изображения будет вызываться скрипт image.php.
Для синхронизации данных в сценарии с балансировкой нагрузки у вас есть общий ресурс nfs или используйте rsync, если допустима задержка в несколько секунд, или используйте загрузку файлов через API (конечно, защитите его) для синхронизации данных между внутренними серверами.

Под размерами вы имеете в виду размеры файлов или высоту / ширину изображения?

Они могут не обязательно разрешать «произвольные» размеры, но прокси-серверы, уменьшающие полосу пропускания (также известные как «ускорители»), повторно сжимают файлы изображений, чтобы сжать их, среди других уловок для экономии полосы пропускания. Википедия есть страница о них со списком опций.

Если вы имеете в виду масштабирование изображений на лету, это в основном то, что делает сценарий эскизов. Многие из них запускаются заранее, но есть другие, которые работают «на лету». Например, CPAN Тепловизор В модуле есть пример CGI-скрипта, который масштабирует загруженное изображение до 200x200.

Я нашел модуль Apache с открытым исходным кодом под названием mod_dims. Он соответствует большинству моих требований и выполняется довольно быстро.