Export to GitHub

phpresizer - Manual.wiki


Гибкий контроль графики на сайте

Использование

Перенаправим все запросы к изображениям на php скрипт Пример .htaccess файла

.htaccess ```

RewriteEngine on RewriteRule (.*.)(jpg|jpeg|bmp|gif|png|tiff|tif) images.php?file=$1$2 [L,NC,QSA]

Unknown end tag for </IfModule>

```

Тепперь запрос: http://example.com/testimage.jpg?type=avatar будет обрабатываться как: http://example.com/images.php?file=testimage.jpg&type=avatar

Определяем логику обработки изображения

images.php

```

array( "width"=>100, // желаемая ширина аватарки "height"=>100, // желаемая высота аватарки "aspect"=>false, // сохранять ли пропорции исходного изображения "zoomSmallImage", //Увеличивать ли изображение если исходник меньше чем требуемая высота, ширина "crop"=>95, //часть центральной части которую следует увеличить "quality" => 75 // качество JPEG или степень ужатия PNG файла "background" => "ff00ae" // цвет котором стоит залить свободные области при $aspect = true; ) );

/* На этом этапе, при необходимости, проверяем разрешено ли пользователю просматривать изображение. В данном примере это пропущено. */

require "/PhpResizer/Autoloader.php"; new PhpResizer_Autoloader();

try { $resizer = new PhpResizer_PhpResizer(array ( "engine"=>PhpResizer_PhpResizer::ENGINE_IMAGEMAGICK, "cache"=>true, "cacheDir"=>DIR."/cache/", "cacheBrowser"=>true, 'tmpDir'=>DIR.'/cache/', ) ); $resizer->resize(DIR."/".$file, $opt, false); }catch(Exception $e) { // обрабатываем ошибки } ```

Параметры передаваемые в конструктор new PhpResizer_PhpResizer()

engine - движок используемый для ужатия. Доступные значения:

PhpResizer_PhpResizer::ENGINE_GD2 (выбрано по умолчанию)- GD (Graphics Draw) library PhpResizer_PhpResizer::ENGINE_IMAGEMAGICK- http://www.imagemagick.org/script/index.php'>ImageMagick PhpResizer_PhpResizer::ENGINE_GRAPHIKSMAGICK - http://www.graphicsmagick.org/'>GraphicsMagick

cache - управление кешированием ужатых изображений на строне сервера. Допустимые значения: true|false по умочанию true

cacheDir - абсолютный путь к папке где будут храниться закешированные ужатые файлы. По умолчанию /tmp/resizerCache/

cacheBrowser - управление кеширования ужатых изображений в браузере. Допустимые значения: true|false

Очиста кеша

В данном примере мы удаляем из папки "/var/www/resizer/cache/" все файлы к которым никто не обращался уже целую неделю. (Внимание!!!, не ошибись с путём к папке) ```

DIR."/cache/")); $resizer->clearCache(60*24*7); ```

Вопрос - ответ

Хочу что изображения сервер отдавал непосредственно, а не через через php-скрипт?

В метод resize третим параметром передайте true, в этом случае скрипт вернёт абсолютный путь к ужатому файлу. например /var/www/site/design/images/PhpResizerCache/4k/33sdfsdf4wesd34rsf43.jpg

Совет

Чтоб при запросе пользователя не заставлять его ждать пока PhpResizer выполнит пережатия изображения, можно использую планировщик заданий crontab готовить ужатые изображения в фоне, сразу как только появляется новое изображение.