Ну это задача как бы не партнерки...
Если нужны изображения произвольного размера, берем
TimThumb,
BFIThumb, или что там у вас в любимчиках.
Кладем в /custom/. Создаем каталог /custom/cache доступный для записи юзеру от которого работает php. Теперь получить картинку 200х200, можно так:
Код:
http://stab.local/custom/timthumb.php?src=../products/img/ach-3000_big_3.png&w=200&h=200
Можно уже в /custom/shop.xml менять картинки для товаров, но URL картинок получается слишком мудренный, да и то что мы использовали TimThumb теперь всем видно (а в нем в одной из версий нашли весьма
неприятную уязвимость). Поэтому используем mod_rewite, чтобы дать отмасштабированным картинкам привычные имена файлов.
Сделаем при помощи mod_rewite, так чтобы по запросам
Цитата:
http://localhost/products/img/файл-ширинахвысота.jpg
нам отдавались отмасшабированные картинки.
В
файл могут содержаться произвольные символы, поэтому регулярное выражение будет
.*В
ширина и
высота могут содержаться только цифры, поэтому описываем их регулярным выражением
[0-9]+Ну и добавим в расширения как jpg, так и png, описав регулярным выражением
jpg|pngСледовательно запросы, подлежащие масштабированию описываются регулярным выражением:
Код:
^products\/img\/(.*)-([0-9]+)x([0-9]+)\.(jpg|png)$
При его разборе все что находится внутри первых скобок будет $1, то что вторых скобок будет $2, третьих - $3 и т.д.
Т.е. в $1 -
файл, в $2 -
ширина, в $3 -
высота, а в $4 - jpg или png
Соответственно, запрос подходящий под это это ругулярное выражение надо трансформировать в:
Код:
/custom/timthumb.php?src=../products/img/$1.$4&w=$2&h=$3
Создаем в корне файл .htaccess следующего содержания:
Код:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^products\/img\/(.*)-([0-9]+)x([0-9]+)\.(jpg|png)$ /custom/timthumb.php?src=../products/img/$1.$4&w=$2&h=$3 [L]
И теперь по запросу
Код:
http://localhostl/products/img/ach-3000_big_3.png
нам откроется оригинальная картинка, а вот по запросу
Код:
http://stab.local/products/img/ach-3000_big_3-200x200.png
уже отмасштабирования TimThubmb-ом до размера 200х200