не работает phpThumbOf. Не работает phpthumb modx evo


Работа с изображениями средствами phpThumbOf / Хабр

phpThumbOf — это аддон для MODx, основанный на популярном скрипте phpThumb. Он позволяет модифицировать изображения средствами различных графических библиотек «на лету».

Я не буду описывать процесс установки аддона из репозитория. Будем считать, что вы уже скачали его и установили.

Причиной написания поста послужил тот факт, что официальная документация по phpThumbOf просто ужасна. Прочитав ман, я подумал, что единственной функцией, которую можно использовать для модификации изображения при его выводе является зум-кроп (zoom-crop), ибо больше там ничего не сказано. Но позже, попробовав использовать некоторые другие опции phpThumb я выяснил, что они прекрасно работают!  

Анатомия phpThumbOf — фильтр вывода

Фильтр Вывода MODx-а позволяет прогнать значение элемента через любой набор фильтров непосредственно перед его выводом на страницу. Синтаксис выглядит следующим образом:[[element:modifier=`value`]] Первым и наиболее правильным способом использования phpThumbOf является именно Фильтра Вывода, который добавляется к TV-параметру типа «изображение».

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

Для начала, создайте новый tv-параметр и назовите его как сочтёте нужным. Мой вариант:

Далее, в закладке «Тип ввода» выберите «Изображение»:

Все, что нам осталось сделать, это указать способ вывода tv-параметра — ставим SRC.

Для экспериментов выберем какую-нибудь интересную картинку. Я нашёл себе такую:

Теперь, когда мы указали в каком-нибудь ресурсе выбранную нами куртинку в качестве значения созданного нами дополнительного параметра, его можно вывести в контенте ресурса с помощью конструкции:

<img src="[[*tvImage]]" /> Как я упоминал в начале статьи, выходной фильтр изменяет элемент до того, как он будет отрисован на странице. Передадим значение нашего tv-параметра выходному фильтру phpThumbOf:[[*tvImage:phpthumbof=`w=120&h=120`]]Ремарка: если мы выводим tv-параметр в шаблоне или чанке, то знак звездочка "*" нужно заменить на плюс "+": [[+tvImage:phpthumbof=`w=120&h=120`]] В результате, мы получим новое сгенерированное изображение, основанное на той картинке, что мы выбрали для ресурса, но масштабированное до размеров 120х120 пикселей. Но как Вы могли заметить, у изображения появились белые поля, возникшие из-за нарушения пропорций исходного изображения.

Избежать этого можно очень просто, достаточно не указывать ширину или высоту. Давайте оставим только фиксированную ширину:

[[+tvImage:phpthumbof=`w=120`]] Теперь результирующее изображение отмасштабировано только по заданной ширине, высота будет пропорциональной исходному соотношению сторон.

Как Вы можете видеть, возможности ресайза изображений безгранично гибки. Вот ещё один пример с шириной 270 пикселей. Кроме того, вы можете получать на выходе изображения больше оригинального, но это порочная практика ;).

[[*tvImage:phpthumbof=`w=270`]]

 

Обрезка изображения с точными размерами

Если мы хотим получить изображение с размерами именно 120 на 120 пикселей, мы можем его обрезать. Для этого, необходимо добавить опцию кропа (zoom-crop) &zc=1.[[*tvImage:phpthumbof=`w=120&h=120&zc=1`]] Теперь мы имеем обрезанную версию нашего изображения с точными размерами и без белых полей.

 

Фильтры PhpThumb — веселье только начинается

Теперь, когда вы знаете, как управлять размером изображения, я покажу вам реальную силу phpThumb — фильтры. Я просто приведу несколько примеров фильтров, доступных в phpThumb. Обратите внимание, что все новые фильтры я добавляю в конец предыдущих примеров. При этом, их позиция имеет значение! Фильтры применяются слева направо.

 

Blur (размытие)

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=blur|10`]]

 

Grayscale (преобразование палитры в градации серого)

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=gray`]]

 

Скругление углов

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=ric|20|20`]]

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

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&f=png&fltr[]=ric|20|20`]]

 

Рамка

Периодически возникает необходимость добавить к изображению рамку. Конечно, это можно сделать средствами CSS. Но иногда возникают моменты, когда CSS бесполезен. Я хочу показать Вам один из таких примеров.[[*tvImage:phpthumbof=`w=120&h=120&zc=1&f=png&fltr[]=bord|5|0|0|FFFFFF&fltr[]=rot|-15|E4F6FE`]]

 

Вращение изображения

Вращение требует небольшого пояснения. Вы должны указать цвет фона для неграфических области в углах. В этом примере мы используем #006699, вращение -45°.[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=rot|-45|006699`]]

Если Вы хотите уменьшить количество JPG=артефактов, вы можете увеличить качество изображения (1-100):

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=rot|-45|006699&q=100`]]

Если Вы хотите получить прозрачный фон, просто измените вывод в PNG, как мы делали это раньше:

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=rot|-45|&f=png`]]

 

Color Overlay (наложение цвета)

Данный фильтр позволяет накладывать любые шестнадцатеричные цвета на изображение. Первое значение — процент, второе — цвет в шестнадцатеричном формате.[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=clr|35|990033`]]

Если Вы хотите получить двухцветное изображение, необходимо сначала наложить фильтр grayscale для обесцвечивания картинки.

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=gray&fltr[]=clr|35|990033`]]

 

Простой текстовый водяной знак

С помощью phpThumb Вы можете накладывать на изображение текстовые и графические водяные знаки. В случае с текстовыми вотермарками Вы можете указать размер, положение, прозрачность и TTF-шрифт.

Вообще, доступных очень много. Рекомендую ознакомиться с документацией.

Вот простой водяной знак на основе стандартного шрифта сервера:

[[*tvImage:phpthumbof=`w=120&h=120&zc=1&fltr[]=gray&fltr[]=wmt|Belafonte Code|3|T|FFFFFF||100|20|0||0|`]]

 

Финиш

Вот, наверно, и все о чем я хотел рассказать. С бОльшим количеством примеров использования phpThumb вы можете ознакомиться на официальной странице проекта.

P.S. Хотел опубликовать в блог «MODx CMS», но как обычно бывает на хабре, не хватило кармы. P.S.S. Перенес в «MODx CMS»

habr.com

Ошибка phpthumb / modx.pro

Привет! внезапно перестали генерироваться картинки на одном из шести сайтов одного аккаунта на сервере. Кроме того, на этом же сервере еще сайтов триста, на котором phpthumb работает. А у меня вот так:2016-08-10 00:51:30] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 00:52:12] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 00:54:46] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 00:55:00] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 00:58:02] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 00:59:11] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 01:10:52] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 01:10:52] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 1215) PHP warning: realpath(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 01:10:52] (ERROR @ /var/www/user334/data/www/.../core/model/phpthumb/phpthumb.class.php : 4360) PHP warning: tempnam(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/user334/data) [2016-08-10 01:10:52] (ERROR @ /var/www/user334/data/www/.../core/components/phpthumbon/model/phpthumbon/phpthumbon.class.php : 176) [phpthumbon] Could not save thumbnail /var/www/user334/data/www/.../assets/cache_image/assets/photo/face_72x72_f21.png: Array ( [0] => phpThumb() v1.7.14-201604151303 in file "phpthumb.class.php" on line 227 [1] => setSourceFilename(/var/www/user334/data/www/.../assets/photo/face.png) set $this->sourceFilename to "/var/www/user334/data/www/.../assets/photo/face.png" in file "phpthumb.class.php" on line 292 [2] => file_exists() = 0 in file "phpthumb.class.php" on line 1419 [3] => file_exists_ignoreopenbasedir() = 1 in file "phpthumb.class.php" on line 1420 [4] => is_file() = 0 in file "phpthumb.class.php" on line 1421 [5] => is_executable() = 0 in file "phpthumb.class.php" on line 1422 [6] => using ImageMagick path from $this->config_imagemagick_path () in file "phpthumb.class.php" on line 1426 [7] => ImageMagick version checked with "'' --version" in file "phpthumb.class.php" on line 1484 [8] => ImageMagick did not return recognized version string () in file "phpthumb.class.php" on line 1490 [9] => ImageMagick convert --version says "" in file "phpthumb.class.php" on line 1492 [10] => $AvailableImageOutputFormats = array(text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 970 [11] => $this->thumbnailFormat set to $this->config_output_format "jpeg" in file "phpthumb.class.php" on line 981 [12] => $this->thumbnailFormat set to $this->f "png" in file "phpthumb.class.php" on line 988 [13] => $this->thumbnailQuality set to "96" in file "phpthumb.class.php" on line 998 [14] => $this->sourceFilename set to "/var/www/user334/data/www/.../assets/photo/face.png" in file "phpthumb.class.php" on line 894 [15] => setCacheDirectory() starting with config_cache_directory = "" in file "phpthumb.class.php" on line 1006 [16] => $this->config_cache_directory () is not a directory in file "phpthumb.class.php" on line 1042 [17] => SetCacheFilename() failed because $this->config_cache_directory is empty in file "phpthumb.class.php" on line 3488 [18] => starting ExtractEXIFgetImageSize() in file "phpthumb.class.php" on line 3320 [19] => GetImageSize(/var/www/user334/data/www/.../assets/photo/face.png) says image is 72x72 in file "phpthumb.class.php" on line 3330 [20] => $this->useRawIMoutput=true after checking $UnAllowedParameters in file "phpthumb.class.php" on line 1592 [21] => phpThumb_tempnam() returning "/var/www/user334/data/www/..." in file "phpthumb.class.php" on line 4362 [22] => ImageMagickSwitchAvailable(thumbnail) = 0 in file "phpthumb.class.php" on line 1529 [23] => IMuseExplicitImageOutputDimensions = 0 in file "phpthumb.class.php" on line 1667 [24] => ImageMagickSwitchAvailable(density) = 0 in file "phpthumb.class.php" on line 1529 [25] => GetImageSize(/var/www/user334/data/www/.../assets/photo/face.png) SUCCEEDED: Array ( [0] => 72 [1] => 72 [2] => 3 [3] => [bits] => 8 [mime] => image/png ) in file "phpthumb.class.php" on line 1684 [26] => GetImageSize(/var/www/user334/data/www/.../assets/photo/face.png) returned [w=72;h=72;f=3] in file "phpthumb.class.php" on line 1689 [27] => source dimensions set to 72x72 in file "phpthumb.class.php" on line 1692 [28] => SetOrientationDependantWidthHeight() starting with "72"x"72" in file "phpthumb.class.php" on line 3299 [29] => SetOrientationDependantWidthHeight() setting w="72", h="72" in file "phpthumb.class.php" on line 3315 [30] => ImageMagickSwitchAvailable(repage) = 0 in file "phpthumb.class.php" on line 1529 [31] => Skipping "+repage" because ImageMagick (v) does not support it in file "phpthumb.class.php" on line 1768 [32] => Skipping $this->fltr[0] (ric|36|36) with ImageMagick in file "phpthumb.class.php" on line 2213 [33] => Remaining $this->fltr after ImageMagick: (array(1) { [0]=> string(9) "ric|36|36" } ) in file "phpthumb.class.php" on line 2216 [34] => ImageMagick called as ('' -resize 'x72' -gravity center -crop '72x72+0+0' '/var/www/user334/data/www/.../assets/photo/face.png[0]' png:'/var/www/user334/data/www/...' 2>&1) in file "phpthumb.class.php" on line 2235 [35] => GetImageSize(/var/www/user334/data/www/...) returned [w=;h=;f=] in file "phpthumb.class.php" on line 2252 [36] => $this->useRawIMoutput set to TRUE because ImageCreateFromPNG(/var/www/user334/data/www/...) failed in file "phpthumb.class.php" on line 2262 [37] => deleting "/var/www/user334/data/www/..." in file "phpthumb.class.php" on line 2265 [38] => Skipping rest of GenerateThumbnail() because ($this->useRawIMoutput == true) in file "phpthumb.class.php" on line 367 [39] => RenderOutput copying $this->IMresizedData (0 bytes) to $this->outputImage in file "phpthumb.class.php" on line 454 )Естесственно, вместо точек домен прописан, да. Что делать — не знаю. Переустанавливал модкс, перезаливал сайт полностью, проставлял права…

modx.pro

не работает phpThumbOf / modx.pro

Всем привет. PhpThumpOf не обрабатывает картинку, отдает ее такой, какая она есть. Вот что пишет в лог, что-то я не могу врубиться, в чем дело.edit phpThumb.config.php and (temporarily) set $PHPTHUMB_CONFIG['disable_debug'] = false; to view the details of this error in file "phpthumb.class.php" on line 4126 [34] => SourceImageToGD() failed in file "phpthumb.class.php" on line 374 ) [2017-02-17 16:37:20] (ERROR @ /var/www/vhosts/domain/centrvet-modx/core/components/phpthumbof/model/phpthumbof/phpthumbof.class.php : 379) [phpThumbOf] Could not generate thumbnail: assets/img/doctors/1486043970.jpg - Debug: Array ( [0] => phpThumb() v1.7.14-201608101311 in file "phpthumb.class.php" on line 229 [1] => setCacheDirectory() starting with config_cache_directory = "/var/www/vhosts/domain/centrvet-modx/core/cache/phpthumb/" in file "phpthumb.class.php" on line 1005 [2] => setting config_cache_directory to $this->realPathSafe(/var/www/vhosts/domain/centrvet-modx/core/cache/phpthumb) = "/var/www/vhosts/domain/centrvet-modx/core/cache/phpthumb" in file "phpthumb.class.php" on line 1033 [3] => setCacheDirectory() starting with config_cache_directory = "/var/www/vhosts/domain/centrvet-modx/assets/components/phpthumbof/cache/" in file "phpthumb.class.php" on line 1005 [4] => setting config_cache_directory to $this->realPathSafe(/var/www/vhosts/domain/centrvet-modx/assets/components/phpthumbof/cache) = "/var/www/vhosts/domain/centrvet-modx/assets/components/phpthumbof/cache" in file "phpthumb.class.php" on line 1033 [5] => setSourceFilename(assets/img/doctors/1486043970.jpg) set $this->sourceFilename to "assets/img/doctors/1486043970.jpg" in file "phpthumb.class.php" on line 294 [6] => CleanUpCacheDirectory() set to purge (30.0 days; 100.00 MB; 10,000 files) in file "phpthumb.class.php" on line 712 [7] => CleanUpCacheDirectory() skipped because "/var/www/vhosts/domain/centrvet-modx/assets/components/phpthumbof/cache/phpThumbCacheStats.txt" is recently modified in file "phpthumb.class.php" on line 722 [8] => $AvailableImageOutputFormats = array(text;ico;bmp;wbmp;gif;png;jpeg) in file "phpthumb.class.php" on line 969 [9] => $this->thumbnailFormat set to $this->config_output_format "jpeg" in file "phpthumb.class.php" on line 980 [10] => $this->thumbnailFormat set to $this->f "jpeg" in file "phpthumb.class.php" on line 987 [11] => $this->thumbnailQuality set to "75" in file "phpthumb.class.php" on line 997 [12] => $this->sourceFilename set to "/var/www/vhosts/domain/centrvet-modx/centrvet-modx/assets/img/doctors/1486043970.jpg" in file "phpthumb.class.php" on line 894 [13] => phpThumb() v1.7.14-201608101311 http://phpthumb.sourceforge.net Error messages disabled.

modx.pro


Prostoy-Site | Все права защищены © 2018 | Карта сайта