Архив 10 декабря 2008

Про картинки

Некоторые картинки с моего сайта стали медленно расползаться по разнообразным форумам. Это все, конечно, здорово – но у меня ограничен трафик (5 Гб в месяц – это на самом деле очень немного при посещаемости выше 150-200 человек в день), а посетителей на сайт это все не привлекает. В результате “отдача” от “картиночного” трафика – практически нулевая.

Мне лично известно два метода борьбы с “bandwidth theft”, как это называют на озабоченом трафиком Западе. Первый – выдача вместо картинок “левого” изображения при “неправильном” HTTP-Referer. Недостаток метода применительно к моему сайту – картинки не будут отображаться в ЖЖшных френдлентах – а это совершенно не нужно.

Второй метод – вставка во все картинки “клейма”, или Watermark. Наглядный пример – всем известный фотоархив Life. Для защиты от копирования – очень здорово, а делая watermark на основе адреса сайта – получим еще и какой-то ПЕАР :) Проблема – навязчивый watermark на страницах собственного сайта видеть, честно говоря, не хочется.

Собираюсь совместить эти два метода. Для этого достаточно при проверке Referer перенаправлять не на “фиксированную” страницу, а на PHP-скрипт с параметром, соответствующим запрошенной картинке. Скрипт и будет вставлять заданную надпись, например, вот так:

Одновременно “убиваем двух зайцев” – и картинка видна, и ссылка на сайт есть. С использованием библиотеки GD такие вещи делаются на раз.

Единственная проблема, которую необходимо как-то решить – кеширование запрашиваемых картинок. А именно, обработка изображений – довольно ресурсоемкая задача (а для шаред хостинга – тем более). Если картинка запрашивается раз в год – то естественно, можно и “поработать”. Но при ежеминутных запросах сервер быстренько “отрубится”. Сохранять копии всех картинок с ватермарком – тем более бессмысленно, далеко не на все загруженные на мой сайт картинки кто-то ссылается. Видимо, поступать будем аналогично известному плагину для Wordpress – сохранять “доработанные” картинки в отдельную директорию, запоминая время создания копии. При очередном запросе будем удалять “старые” сохраненные картинки.

В общем, еще одна простая, но интересная задача по программированию.