Modx phpthumbof: phpThumbOf — phpThumbOf | MODX Documentation

Содержание

Работа с изображениями средствами 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»

phpThumbOn / Работа с фото, видео и файлами / Дополнения MODX / modstore.pro


ПараметрОписаниеЗначение
phpthumbon.images_dirПапка, которая будет вырезаться из пути в кеш-директории

Возможные значения
Имя папки

Значение по умолчанию
images

Примечание
Относительно директории assets


phpthumbon.qualityКачество картинки по умолчанию

Возможные значения
Целое число больше 0

Значение по умолчанию
96

Примечание
Если не задано качество картинки в параметрах при вызове сниппета, то будет использоваться это значение


phpthumbon.cache_dirИмя папки с кешем

Возможные значения
Имя папки

Значение по умолчанию
cache_image

Примечание
Относительно папки assets


phpthumbon.extЕсли на сжатие приходит картинка в неизвестном формате, то будет использоваться этот тип

Возможные значения
Расширение имени файла

Значение по умолчанию
jpeg

Примечание
Если на сжатие приходит картинка в неизвестном формате, то будет использоваться этот тип


phpthumbon.noimageПуть к картинки с изображением «картинка не существует»

Возможные значения
Путь к файлу

Значение по умолчанию
{assets_path}components/phpthumbon/noimage.jpg

Примечание
Если картинка указанная в input окажется не доступной или вообще этот параметр пуст, то на обработку поступит картинка указанная в этом параметре


phpthumbon.queueАктивация поддержки очередей

Возможные значения
0, 1, 2

Значение по умолчанию
0

Примечание
0 — не использовать очереди; 1 — использовать очередь и не сжимать noimage; 2 — использовать очередь и сжимать noimage под нужный размер


phpthumbon.queue_classpathПуть к файлу с классом QueueThumb

Возможные значения
0, 1, 2

Значение по умолчанию
{core_path}/components/phpthumbon/queue/QueueThumb.class.php

Примечание
В указанном файле должен располагаться класс QueueThumb с публичным статичным методом add(phpThumbOn $ThumbOn, modX $modx). Класс по умолчанию не использует очередей в прямом смысле слова и лишь сохраняет данные в таблицу modx_thumb_images для последующей обработки через процессор из крона.


phpthumbon.error_modeПравила обработки ошибочных картинок

Возможные значения
1, 2

Значение по умолчанию
1

Примечание
1 (по умолчанию) — сжатие noimage с заданными параметрами; 2 — вывод оригинальной картинки без обработки


phpthumbon.noimage_cacheПапка с закешированными noimage файлами

Возможные значения
полный путь к любой папке

Значение по умолчанию
{assets_path}components/phpthumbon/cache/

Примечание
Путь к папке в которой уже хранятся noimage нужных размеров


phpthumbon.total_queue
Число обрабатываемых заданий из очереди за 1 раз

Возможные значения
от 1 до 10

Значение по умолчанию
1

Примечание
Не более 10. В случае отсутствия значения у этого параметра устанавливается значение по умолчанию — 1


phpthumbon.make_cachenameСниппет который может подменить дефолтные правила формирования кеш имен картинок

Возможные значения
Любое имя существующего сниппета в системе

Значение по умолчанию
(пусто)

Примечание
Сниппет должен вернуть сериализованный массив со следующими ключами:

  • _cacheFileName (имя файла с полным адресом относительно корня сервера)
  • _cacheSuffix (суффикс в имени кеш файла)
  • _globThumb (шаблон поиска других превьюх этого же файла)

phpThumbOf или pThumb для PDF миниатюр в Modx



Я использую phpThumbOf на своем сайте для создания измененных изображений на моем сайте modx. Теперь я попытался сделать область загрузки, где я хочу показать некоторые миниатюры PDFs, но он не генерирует их. Когда я пытаюсь использовать pThumb, он возвращает путь к исходному файлу.

Я уже подтвердил, что ImageMagick и php-imagick установлены и включены.

Кроме того, моя локальная среда разработки должна позволять использовать exec , поэтому я не понимаю, почему это не работает.

Неужели кто-то уже заставил это работать?

modx phpthumb
Поделиться Источник Thomas Venturini     28 ноября 2016 в 10:19

2 ответа




1

Работает ли Ghostscript в вашей настройке? Это необходимо для создания миниатюр PDFs.

Источник: http://phpthumb.sourceforge.net/demo/docs/phpthumb.faq.txt

Цитата:

Вопрос: Могу ли я сделать миниатюры из PDF? Ответ: Да, пока у вас есть и ImageMagick, и GhostScript установленный. Версия AFPL GhostScript, кажется, работает лучше, чем версия GNU (по крайней мере, для меня это так). http://www.imagemagick.org http://www.cs.wisc.edu/~призрак/ Вы можете использовать «sfn» (номер исходного кадра) параметр phpThumb, чтобы указать, какую страницу миниатюрировать.

Поделиться achterbahn     23 декабря 2016 в 09:37



0

Используйте pThumb. Это fork из phpThumbOf.

Вы говорите, что уже получаете путь к изображению (включая изображение?). Вы могли бы вложить это во что-то вроде этого:

<a href="[[+image:pthumb=`w=800&h=400&zc=0`]]" rel="lightbox" title="Click for enlagement" >
  <img src="[[+image:pthumb=`w=150&h=150&zc=0`]]" />
</a>

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

Поделиться Guido Gallenkamp     29 декабря 2016 в 18:04


Похожие вопросы:


modx + phpthumbof = {«success»: false, «code»:401}

Я пытаюсь заставить phpthumbof работать во всех моих контекстах. Поскольку мне не повезло с фрагментом или output-filter/-modifier, я использовал прямую ссылку на разъем phpthumb:…


Modx SimpleSearch: кириллица не найдена

Описание проблемы: есть сайт на Revo 2.4.2. Babel устанавливается с тремя контекстами (Ru, Ua, En). Установлено SimpleSearch 1.9.2. Проблема заключается в невозможности поиска кириллического слова…


Изображения FPDF не работают в MODx Revo

Я использую MODx revolution 2.2.1-PL и FPDF для генерации некоторых PDFs. Я обнаружил, что использование любых изображений размером более 100 КБ (по крайней мере, вокруг этого поля) приводит к их…


PDF отображение миниатюр

Как отобразить PDF миниатюр на странице ASP


Как правильно добавлять водяные знаки на лету в modx revo с помощью phpthumbof

Использование modx revo (2.3.3-pl). Я хотел бы использовать фрагмент phpthumbof для добавления водяных знаков на лету к изображениям, на которые ссылаются ссылки. Другими словами, Я хочу просто…


Modx phpthumbof не влияет на изображение

<img src = [[+tv.img:phpthumbof=`w=180&h=150`]]> Эта конструкция возвращает изображение с исходным размером Я попробовал создать phpthumbof/cache с 777 Я попробовал переустановить…


PDF миниатюр в Delphi

Мне было интересно, есть ли простой способ создания миниатюр файлов PDF в Delphi. В принципе, я хочу сделать первую страницу PDF маленькой bitmap (скажем, 100×100 или что-то подобное). Я вижу два…


Создание миниатюр Pdf страниц

Хиии Я хотел узнать о создании миниатюр в pdf в android. Я хочу, чтобы все миниатюры pdf отображались при отображении pdf.


PDF миниатюр на windows server 2008 R2 в asp.net

Я пытаюсь отобразить PDF миниатюр на сайте asp.net. Когда я запускаю веб-сайт на своем локальном mechine из visual studio debug — отображаются миниатюры изображений (tiff или pdf). Когда я запускаю…


PDF предварительный просмотр миниатюр изображений в laravel 5.1?

У меня есть файловый модуль,где я хочу перечислить все файлы с предварительным просмотром миниатюр. как это выглядит следующим образом, Я храню файлы в папке storage , которая недоступна через http…

phpthumb: Примеры — [MODX] Guru

Изменение размера

Исходное изображение в 3264х2448 пикселей изменяем в 267х200 пикселей с помощью опций zc, far и iar

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200`]]"> 
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,far=C,bg=e2e2e2`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,iar=1`]]">

Степень сжатия

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,far=C,bg=e2e2e2,q=1`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,far=C,bg=e2e2e2,q=50`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,far=C,bg=e2e2e2,q=75`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,far=C,bg=e2e2e2,q=95`]]">

Поворот изображения

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,ra=45`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,ra=-45`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,ra=90`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,ra=180`]]">

Изменение яркости

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=brit|-255`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=brit|-25`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=brit|25`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=brit|255`]]">

Изменение контрастности

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=cont|-255`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=cont|-25`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=cont|25`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=cont|255`]]">

Гамма-коррекция

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=gam|0.01`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=gam|1.0`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=gam|5.0`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=gam|10`]]">

Насыщенность

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=sat|0`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=sat|-10`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=sat|-50`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=sat|-100`]]">

Водяные знаки

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=wmi|/assets/images/phpthumb/water.png|BR|50|5|5`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=wmi|/assets/images/phpthumb/water.png|C|50`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=wmi|/assets/images/phpthumb/water.png|*|50|5|5`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=wmi|/assets/images/phpthumb/water.png|C|50|||45`]]">

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

<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=ric|15|15`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=ric|50|50`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=ric|100|100`]]">
<img src="[[phpthumb? &input=`assets/images/phpthumb/img_71691.JPG` &options=`w=267,h=200,zc=C,fltr[]=ric|50|15`]]">

GitHub — modxcms/pThumb: A better phpThumbOf

A fork of phpThumbOf 1.4.0. pThumb is a lightweight, efficient, and actively maintained replacement for phpThumbOf. It offers most of the functionality of its predecessor while adding new features, fixing bugs, and offering some potentially dramatic speed improvements on sites which use phpThumbOf heavily.

Curious how pThumb compares to phpThumbsUp, etc.? I’ve got a wiki page with some observations and thoughts. There are a few other worthwhile pages there too.

Вопросы? Проблемы? Пишите по-русски!

Installation

pThumb is a drop-in replacement for phpThumbOf. It uses the same namespace, settings and component names, so after it’s installed any code using phpThumbOf will automatically use the new version instead, with no further changes to the site required.

  1. Download pThumb via Package Management.
  2. Uninstall phpThumbOf if it’s installed.
  3. Install pThumb.

Your phpThumbOf cache will be cleared in the process, but since pThumb generates slightly different filenames the images would have to be regenerated anyway.

(Actually you don’t have to uninstall phpThumbOf first, but it makes things less confusing. If you uninstall phpThumbOf later, you’ll have to reinstall pThumb.)

Documentation

pThumb includes two snippets: phpthumbof and pthumb. They’re exactly the same; use whichever snippet name you like best. phpthumbof is handy for an existing site that was already using phpthumbof; pthumb better for future compatibility and shorter too 🙂

Official documentation for phpThumbOf and phpThumb.

pThumb adds the following system settings:

  • Check File Modification Time: Checks the original image’s file modification time and updates the cached version if necessary. Changing this setting’s value will cause all currently cached images to become stale. Default: No

  • Global Defaults: An options string of global defaults. For example: q=60&zc=C. These may be overridden by specifying another value in the snippet call.

  • Use Resizer: A global setting for which image manipulation class to use. Setting this to No means pThumb will use the MODX’s built-in phpThumb class. See the Resizer section and extra for more details. Default: No

  • Use pThumb Cache: Controls which cache system to use: the ”classic” phpThumbOf cache or the new pThumb cache which supports subdirectories and uses shorter hashes. See the section below for more on this. Default: No

  • Clean Level: Specifies what the cache manager plugin should do on site refresh (site cache clear) events. The plugin processes all 3 caches: phpThumbOf style, pThumb style, and remote images. Possible values — 0: (default) Do nothing. || 1: Clean the caches separately based on the “Max Cache *” system settings (core > phpThumb). || 2: Delete all cached images. || One tip for option 1: changing one of the “Max Cache *” settings to 0 will disable cache cleaning for that parameter.

and several new properties to the phpthumbof/pthumb snippets:

  • &debug: When this is on, phpThumbOf will write the phpThumb debugmessages array to the MODX error log. This is very useful for troubleshooting phpThumb issues, like whether it’s using ImageMagick on not.

  • &useResizer: Overrides the phpthumbof.use_resizer system setting to allow more flexibility in switching between phpThumb and Resizer. Useful if you generally want to use one but need the other in a few particular places.

  • &toPlaceholder: Stores the output in three placeholders: thumbnail URL, width and height. Ex: [[pthumb? &input=`[[*imagetv]]` &options=`w=200` &toPlaceholder=`thumb`]] then <img src="[[+thumb]]">. For more details on this see the Image Dimensions section.

  • &s3output, &s3multiImg: See the S3 documentation.

New pThumb Features

Resizer

[Requires PHP 5.3 or higher]

pThumb comes bundled with Resizer, a lightweight modern alternative to phpThumb. Built on Imagine, Resizer supports the Gmagick, Imagick and GD extensions and is considerably faster than phpThumb for image sizing and cropping operations. Plus all the ZC options now work with GD.

See the Resizer documentation for more on its requirements and supported options. Note that it doesn’t support any of phpThumb’s filters, but many of these things can be done with CSS nowadays.

To enable it, go to System Settings and under phpthumbof, change Use Resizer to Yes. You don’t need to make any other changes to your site; pThumb transparently handles switching between them. You can even override the system setting for a particular pthumb call by using the &useResizer property (1 for yes, 0 for no).

pThumb Cache

New in version 2.1 is the pThumb Cache, an option which allows cleaner, more semantic and SEO-friendly URLs. Instead of everything being lumped into a one-level directory and having a 32-character hash appended, the new cache system stores thumbnails in subdirectories which mirror part of the original image’s path and adds only an 8-character hash to filenames. Plus, pThumb still offers the original phpThumbOf-style cache. You switch between the two via a system setting.

Cache operation is controlled by three settings (in System Settings under phpthumbof):

  • pThumb Cache Location: The directory to store cached images. The path is relative to the MODX base directory, which is generally your web root. It defaults to assets/image-cache. pThumb will create this directory if it doesn’t already exist (as long as filesystem permissions allow it to).

  • Images Base Directory: This should be set to the directory where you have your images. It defaults to assets, but you’ll probably want to make it more specific. This directory and any above it will be left out of the cache filename’s path. Any subdirectories below it will be included. See the example below for more details. If you run pThumb on an image outside this directory, it’ll simply be put in the top level of the cache.

  • Use pThumb Cache: Once you’ve checked the above two settings, flip this to Yes to switch to use the new cache.

Example: You’ve set up a media source for all the content images on your site and they’re all in assets/acme/images/ Use that for the Image Base Directory setting. Leading/trailing slashes don’t matter; pThumb will deal with them either way. You leave Cache Location set to the default. First you call pthumb on this image: assets/acme/images/products/whiz-o-matic/exploded-view-1.jpg. To create a cache filename your Image Base Directory value—and anything in front of it—will be replaced with Cache Location and the rest of the path used for the name, meaning you’ll end up with a thumbnail URL of /assets/image-cache/products/whiz-o-matic/exploded-view-1.a9b0032f.jpg. Now suppose you’ve got some oddball image in assets/misc/clutter/junky-junk.jpg (that is, outside the Image Base Directory you set). No problem, it’ll just go to assets/image-cache/junky-junk.922ebc0b.jpg.

Note: Switching cache systems won’t migrate your cached images from one cache to the other; images be regenerated as needed. But it won’t delete existing images either, so if you switch back they’ll still be there.

Amazon S3

Version 2.3 adds S3 support, with some improvements over phpThumbOf. See this page for instructions on how to use it.

Remote Images

pThumb goes to some lengths to handle remote images well, whether they’re coming from an S3 media source or from some other server. It uses cURL to download the original image to assets/components/phpthumbof/cache/remote-images/, then uses that local copy for all future operations, meaning things are quite fast after the first run. Version 2.3 improves file naming for remote images, so the output thumbnail file names will be the same as if the original images were local.

Be aware though that once the remote image has been cached, pThumb won’t look at the original again unless you delete the cached copy. Or as an alternative, you may use a query parameter for cache busting. For example if you have a TV called someImageTV, you can do something like this: <img src="[[pthumb? &input=`[[*someImageTV]]?v=1` &options=`h=150&w=150`]]">. The first time through this will cause pThumb to download a new copy of the remote image and generate a new thumbnail.

Image Dimensions

Starting in version 2.3.1 pThumb can also output image dimensions. It provides two ways of doing this. The first is the &toPlaceholder property described above. Sometimes though placeholders can be tricky, like when they’re being used in a chunk being iterated over by something like getResources. In certain cases—if you don’t give the placeholders distinct names like &toPlaceholder=`img[[+idx]]`—all the placeholders will be filled in with the values from the last iteration.

However there’s another way to get image dimensions which doesn’t involve placeholders: add dims=1 to the options string and pThumb will output src, width and height all together. Like this: <img [[*imagetv:pthumb=`w=200&dims=1`]] alt="test image"> becomes <img src="/image-cache/test.d39f9375.jpg" alt="test image">.

Troubleshooting

If pThumb runs into a problem during thumbnail creation, it will simply return the input file name and exit. Usually this happens because some part of the input path or file name is incorrect and pThumb can’t find the image. A broken image link on the front end is a sure sign of this, meaning your web browser can’t find the image either. pThumb will actually correct for several common configuration mistakes and find the image anyway, but in some cases it can’t. Check the MODX error log for more insight into what’s going awry.

Changes from phpThumbOf 1.4.0

pThumb addresses the following open phpThumbOf issues:

  • [#37] Add a phpthumbof.jpeg_quality global default JPEG quality setting
  • [#46] add phpthumbof.check_mod_time option to refresh the cached image if the original has been modified
  • [#44] [#49] Prevent generation of identical images when the same image is used in multiple resources
  • [#48] [#49] Fix duplication of images with identical names in different directories
  • [#47] Exit quickly and silently when called with no filename, such as in the case of an empty placeholder
  • [#52] Make input filename handling more robust, particularly when MODX is installed in a subdirectory
  • [#53] Trim extension properly
  • [#54] [#50] Fix cache cleaning

In addition to that it:

  • Improves performance, especially on sites and pages which use phpThumbOf extensively. In some cases the difference can be very significant.
  • Adds better debugging output, like the page’s resource ID to make finding broken images easy, or simple access to phpThumb’s debug messages.
  • Improves phpThumbOfCacheManager behavior so that the cache isn’t wiped out by default. The cache manager provides three different levels of cleaning and does better reporting on the number of files and the size of a cache.

Компонент pThumb. Настройки и параметры phpThumb

#
src
Имя файла исходного изображения.
#
new
Создать новую картинку, не миниатюру из существующего изображения. Требует набор параметров «w» и «h».&new=FF0000|75 — красный background, 75% opacity. Для фона устанавливаются цвета в формате hex. Параметр Opacity опциональный, по умолчанию 100%.
#
w
Максимальная ширина выходной миниатюры в пикселях.
#
h
Максимальная высота выходной миниатюры в пикселях.
#
wp
Максимальная ширина для портретных изображений.
#
hp
Максимальная высота для портретных изображений.
#
hl
Максимальная высота для пейзажных изображений.
#
ws
Максимальная ширина для квадратных изображений.
#
hs
Vаксимальная высота для квадратных изображений.
#
f
формат изображения после обработки («webp», «jpeg», «png», или «gif»).
#
q
Компрессия JPEG (качество). 
  • 1 = наихудшее
  • 95 = отличное
  • 75 = по умолчанию
#
sx
Левая сторона исходного прямоугольника (по умолчанию = 0) (значения 0 < sx < 1).
#
sy
Верхняя сторона исходного прямоугольника (по умолчанию = 0) (значения 0 < sy < 1).
#
sw
Ширина исходного прямоугольника (по умолчанию = fullwidth) (значения 0 < sw < 1)
#
sh
Высота исходного прямоугольника (по умолчанию = fullheight) (значения 0 < sh < 1)
#
zc
Масштабирование при обрезке (zoom-crop). С авто кропом, изображение будет обрезаться по большему размеру, чтобы заполнять меньший размер (требует указания обоих параметров «w» и «h», переопределяет «iar», «far»). Необходим ImageMagick для значений отличных от «C» или «1».
  • C — обрезает к центру
  • T — обрезает к верху
  • B — обрезает к низу
  • L — обрезает к левой стороне
  • R — обрезает к правой стороне
  • TL — обрезает к верхней левой стороне
  • TR — обрезает к верхней правой стороне
  • BL — обрезает к нижней левой стороне
  • BR — обрезает к нижней правой стороне
#
bg
Цвет фона (по умолчанию = FFFFFF).
#
bc
Цвет границы (по умолчанию = 000000).
#
fltr
Фильтр. Вызывается в виде массива с параметрами:
#
brit
яркость — fltr[]=brit|<value> — где <value> значение в диапазоне от -255 до 255.
#
cont
контрастность — fltr[]=cont|<value> — где <value> значение в диапазоне от -255 до 255.
#
gam
гамма-коррекция — fltr[]=gam|<value> — где <value> число от 0.01 до 10 (по умолчанию 1.0).
#
sat
насыщенность — fltr[]=sat|<value> — где <value> число в диапазоне от 0 (без изменений) до -100 (полное обесцвечивание = оттенки серого), или это может быть любое положительное число для повышенной насыщенности.
#
ds
обесцвечивание — fltr[]=ds|<value> — аналогично «sat», но положительные значения обесцвечивают, отрицательные — насыщают цветом.
#
gray
оттенки серого — fltr[]=gray — убрать цветность.
#
th
порог — fltr[]=th|<value> — переводит изображение в оттенки серого, затем все пиксели ярче <value> (диапазон 0-255) делает белыми, все пиксили темнее <value> делает черными.
#
rcd
уменьшить глубину цвета — fltr[]=rcd|<c>|<d> — где <c> количество цветов (2-256) в выходном изображении, а <d> равное «1» сгладить (по умолчанию) или «0» не сглаживать.
#
clr
раскрасить — fltr[]=clr|<value>|<color> — где <value> число между 0 и 100 для количества расцвечивания, <color> — цвет для расцвечивания.
#
sep
сепия — fltr[]=sep|<value>|<color> — где <value> число между 0 и 100 для количества расцвечивания (по умолчанию=50), и <color> цвет, чтобы раскрасить (по умолчанию=A28065).
#
usm
нерезкое маскирование — fltr[]=usm|<a>|<r>|<t> — где <a> это сумма (по умолчанию = 80, диапазон 0-255), <r> это радиус (по умолчанию = 0.5, диапазон 0.0-10.0), <t> это порог (по умолчанию = 3, диапазон 0-50).
#
blur
размытие — fltr[]=blur|<radius> — где (0 < <radius> < 25) (по умолчанию = 1).
#
gblr
гауссово размытие — fltr[]=gblr.
#
sblr
избирательное размытие — fltr[]=gblr.
#
smth
smooth — fltr[]=smth|<value> — где <value> весовое значение для матрицы (диапазон от -10 до 10, по умолчанию 6).
#
lvl
уровни — fltr[]=lvl|<channel>|<method>|<threshold — где <channel> может быть одним из «r», «g», «b», «a» (для Red, Green, Blue, Alpha соответственно), или ‘*’ для всех RGB каналов (по умолчанию) основанных на шкале серого среднего.
#
wb

баланс белого — fltr[]=wb|<c> — где <c> это целевой шестнадцатеричный цвет к балансу белого, этот цвет соответствует «белому» или светло-серому. Фильтр пытается поддерживать яркость, поэтому теоретически можно использовать любой серый цвет.

«wb» в настройках по умолчанию уже дает эффект, аналогичный «lvl», обычно нет необходимости использовать «lvl», если уже используется «wb».

#
hist

гистограмма — fltr[]=hist|<b>|<c>|<w>|<h>|<a>|<o>|<x>|<y> — где:

  • <b> — цветная (ые) полоса (ы) для отображения сзади и спереди (одно или несколько значений «rgba *» для Red, Green, Blue, Alpha и Grayscale соответственно).
  • <c> — разделенный точками с запятой список шестнадцатеричных цветов, используемых для каждой полосы графика (по умолчанию FF0000, 00FF00, 0000FF, 999999, FFFFFF соответственно).
  • <w> и <h> — ширина и высота наложенной гистограммы в пикселях или, если <= 1, то процент от ширины / высоты исходного изображения.
  • <a> — выравнивание (такое же, как для «wmi» и «wmt»).
  • <o> — непрозрачность от 0 (прозрачная) до 100 (непрозрачная) (требуется PHP v4.3.2, в противном случае — 100% непрозрачная).
  • <x> и <y> — край края в пикселях (или процент, если 0 <(x | y) <1).
#
over

overlay / underlay накладывает изображение на миниатюру или накладывает миниатюру на другое изображение (например, для создания рамки рисунка) — fltr[]=over|<i>|<u>|<m>|<o> — где:

  • <i> — имя файла изображения.
  • <u> — это «0» (по умолчанию) для наложения изображения поверх эскиза или «1» для наложения эскиза поверх изображения.
  • <m> — это поле может быть в абсолютных пикселях или если <1 представляет собой процент от размера эскиза [должно быть<0,5] (по умолчанию 0 для наложения и 10% для наложения).
  • <o> — непрозрачность (0 = прозрачный, 100 = непрозрачный) (требуется PHP v4.3.2, в противном случае — 100% непрозрачный).
#
wmi

водяной знак в виде изображения — fltr[]=wmi|<f>|<a>|<o>|<x>|<y>|<r> — где:

  • <f> — накладываемое изображение.
  • <a> — выравнивание, один из BR, BL, TR, TL, C, R, L, T, B, * (=плитка).
  • <o> — прозрачность от 0 (прозрачный) до 100 (непрозрачный).
  • <x> — и <y> отступ от края (и между плиткой) в пикселях (или процентах если 0 < (x|y) < 1).
  • <r> — угол поворота водяного знака.
#
wmt

текстовый водяной знак — fltr[]=wmt|<t>|<s>|<a>|<c>|<f>|<o>|<m>|<n>|<b>|<O>|<x> — где:

  • <t> — текст используемый в качестве водяного знака.
  • <s> — размер шрифта (1-5 для встроенного шрифта или размер шрифта для шрифтов TrueType).
  • <a> — выравнивание, один из BR, BL, TR, TL, C, R, L, T, B, * (=плитка).
  • <c> — цвет текста.
  • <f> — имя файла TTF (опционально, если не указать будет использоваться встроенный шрифт).
  • <o> — прозрачность от 0 (прозрачный) до 100 (непрозрачный).
  • <m> — отступ от края (и между плиткой) в процентах.
  • <n> — угол.
  • <b> — цвет фона.
  • <O> — прозрачность фона от 0 (прозрачный) до 100 (непрозрачный).
  • <x> — направление распространения фона (либо «x» либо «y», или оба, но так будет закрыто все изображение).

<x> — работает только со шрифтами TTF, но не со встроенными.

#
flip
сдвиг изображения по оси X или Y — fltr[]=flip|x или fltr[]=flip|y.
#
ric

скруглить углы изображения (для вывода прозрачных изображений PNG) — fltr[]=ric|<x>|<y> — где:

  • <x> — горизонтальный радиус кривой.
  • <y> — вертикальный радиус.
#
elip
похоже на скругление углов, но более эксримальное — fltr[]=elip.
#
mask
fltr[]=mask|filename.png|<i> — значения маски в оттенках серого. Применяется в качестве альфа-канала к основному изображению. Белый непрозрачный, черный прозрачный, если параметр <i> (инвертировать) не установлен в 1, в этом случае черный непрозрачный, а белый прозрачный.
#
bvl

BeVeL — fltr[]=bvl|<w>|<c1>|<c2> — где: 

  • <w> — ширина скоса.
  • <c1> — цвет в формате HEX для верхнего и левого оттенков.
  • <c2> — цвет в формате HEX для нижнего и правого оттенков.
#
bord

граница — fltr[]=bord|<w>|<rx>|<ry>|<c> — где:

  • <w> — ширина границы в пикселях.
  • <rx> и <ry> — горизонтальные и вертикальные радиусы для закругленных углов.
  • <c> — цвет границы.
#
fram

рамка наподобие «bord», но более настраиваемая — fltr[]=fram|<w1>|<w2>|<c1>|<c2>|<c3> — где:

  • <w1> — ширина основной границы.
  • <w2> — ширина каждой стороны скосной части.
  • <c1> — цвет в формате HEX главной границы.
  • <c2> — цвет подсветки границы.
  • <c3> — цвет тени границы.
#
drop

тень — fltr[]=drop|<d>|<w>|<clr>|<a>|<o> — где:

  • <d> — расстояние от изображения до тени.
  • <w> — ширина затенения тени (еще не реализовано).
  • <clr> — цвет тени в формате HEX.
  • <a> — угол тени (по умолчанию = 225).
  • <o> — непрозрачность (0 = прозрачный, 100 = непрозрачный, по умолчанию = 100) (еще не реализовано)
#
crop

обрезка изображения — fltr[]=crop|<l>|<r>|<t>|<b> — где:

  • <l> — количество пикселей для обрезки с левой стороны измененного изображения.
  • <r> — количество пикселей для обрезки с правой стороны измененного изображения.
  • <t> — количество пикселей для обрезки с верхней стороны измененного изображения.
  • <b> — количество пикселей для обрезки с нижней стороны измененного изображения.
#
rot

поворот — fltr[]=rot|<a>|<b> — где:

  • <a> — угол поворота в градусах.
  • <b> — цвет фона. Подобно «ra», но применяется после обработки других фильтров, поэтому вы можете вращать другие фильтры.
#
size

изменение размера —  fltr[]=size|<x>|<y>|<s> — где:

  • <x> — горизонтальный размер в пикселях.
  • <y> — вертикальный размер в пикселях.
  • <s> растянуть (если = 1) или изменить размер пропорционально (0, по умолчанию) <x> и <y> будут интерпретироваться как процент от текущего размера изображения если (0 < X < 1)

Не используйте этот фильтр без необходимости. Только в случаях, когда к другим фильтрам необходимо применить абсолютное позиционирование на основе исходного изображения и полученное изображение должно быть изменено после применения других фильтров. Этот фильтр является менее эффективным, чем стандартные процедуры изменения размера.

#
md5s
MD5-хэш исходного изображения

создание миниатюр изображений / Сниппеты / Modx Evolution / Технический блог веб-разработчика

С помощью данного сниппета мы можем создавать миниатюры для уже загруженных картинок. 

Параметры сниппета: 
&input=`assets/template/img/1.jpg` — исходное изображение
&options=`w=300,h=300,far=C` — опции для обработки изображений. 

Опции указываются через запятую. Слева от знака ровно название опции, справа — её значение:  
w=300 — ширина миниатюры,
h=300 — высота миниатюры,
far=С — выравнивание изображения при его пропорциональном изменении до указанных размеров: C — по центру, T — сверху, B — снизу, L — по левому краю, R — по правому. При этом само изображение получится заданных размеров, а пустые области будут заполнены цветом, указанным в параметре bg.  
zc=C — выравнивание изображение при обрезке (отсечении пикселов) по большей стороне, и при необходимости, — пропорционального увеличения его меньшей части таким образом, чтобы заданные размеры были заполнены. Отменяется опцией far. Выравнивание: C — по центру, T — сверху, B — снизу, L — по левому краю, R — по правому. 
bg=e2e2e2 — цвет, которым будет заполнена пустая область. 

Примеры: 
[­[phpthumb? &input=`assets/template/img/car.jpg` &options=`w=300,h=300`]] — большая сторона изображения будет изменена до указанных размеров, другая — будет пропорционально изменена и не обязательно в итоге окажется указанного размера. 
[­[phpthumb? &input=`assets/template/img/car.jpg` &options=`w=300,h=300, far=C`]] — то же самое, но в итоге получится изображение указанных размеров, при этом сама картинка будет пропорциональной. Пустые области будут заполнены указанным цветом. 
[­[phpthumb? &input=`assets/template/img/car.jpg` &options=`w=300,h=300, zc=C`]] — меньшая высота изображения при необходимости будет увеличена до заданных размеров, а большая сторона будет наоборот отсечена до указанного размера. 

phpThumbOf — phpThumbOf | Документация MODX

Что такое phpThumbOf? ¶

phpThumbOf — это безопасный настраиваемый выходной фильтр для MODX Revolution, который позволяет использовать phpThumb для любого URL-адреса изображения, указанного в заполнителе.

Требования¶

  • MODX Revolution 2.0.4 или новее
  • PHP5 или выше

История

phpThumbOf был написан Шоном МакКормиком как безопасный выходной фильтр phpThumb и впервые выпущен 3 ноября 2010 года.

Загрузить¶

Его можно загрузить из менеджера MODX Revolution через Управление пакетами или из репозитория MODX Extras здесь: https://modx.com/extras/package/phpthumbof

Атрибуты

  • w = Ширина (в пикселях)
  • h = Высота (в пикселях)
  • zc = Масштаб кадрирования. Установите значение 1, чтобы включить обрезку с масштабированием.

Примеры использования¶

Преобразуйте изображение в размер 120 на 120 пикселей.

  [[* image: phpthumbof = `w = 120 & h = 120`]]
  

Создайте миниатюру размером 300×300 с обрезкой масштабирования.

  [[* thumbnailImage: phpthumbof = `w = 300 & h = 300 & zc = 1`]]
  

При использовании телевизора тип вывода для телевизора должен быть «текст».

Вышеуказанные свойства не единственные, которые вы можете использовать с phpthumbof. Дополнительную документацию по phpThumb можно найти в Google или в readme (все свойства примерно на 1/3 меньше).

Продолжая

Вы можете увидеть больше примеров обработки изображений на стороне сервера, а также замечательную статью Аарона Белафонте, включая примеры более продвинутого использования phpthumbof, в его блоге.Вы можете найти это здесь.

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

phpThumbOf может использовать Amazon S3 для хранения кэшированных изображений вместо их локального хранения. Вы также можете использовать сеть доставки контента Amazon CloudFront для обслуживания этих образов. Сначала вам нужно будет создать учетную запись в Amazon AWS и создать корзину Amazon S3 для использования с phpThumbOf. Чтобы использовать CloudFront, создайте дистрибутив CloudFront для использования с этим сегментом и настройте псевдоним домена, если хотите его использовать.

Используйте следующие системные настройки, чтобы настроить phpThumbOf для использования Amazon S3.Эти настройки можно переопределить, вызвав phpThumbOf как фрагмент и указав другие параметры в вызове фрагмента, или используя набор свойств.

Имя системной настройки Ключ Описание
Amazon S3 Bucket phpthumbof.s3_bucket Имя корзины Amazon S3, которую вы хотите использовать с phpThumbOf.
Время кэширования Amazon S3 phpthumbof.s3_cache_time Количество часов для кэширования эскиза на Amazon S3.Эскизы старше указанного будут автоматически восстановлены, когда phpThumbOf вызывается без кеширования. Если плагин phpThumbOfCacheManager включен, он очистит все эскизы на Amazon S3 при очистке кеша сайта.
Используйте PHP get_headers для проверки даты изменения phpthumbof.s3_headers_check Если установлено «Да», phpThumbOf будет использовать PHP get_headers для проверки даты изменения на S3 thumbos. По умолчанию установлено значение «Нет», что означает, что phpThumbOf будет использовать Amazon S3 get_object_url, что быстрее.Включите это, если у вас возникли проблемы с кешированием.
Псевдоним хоста Amazon S3 phpthumbof.s3_host_alias Если вы используете CNAME или другой псевдоним для изменения домена службы S3, введите его здесь (без косой черты в конце). Если вы используете Amazon CloudFront для доставки контента, введите домен, который вы используете для доставки CloudFront. Это может быть домен вашего дистрибутива CloudFront или домен, который вы используете в качестве псевдонима для этого дистрибутива.
Ключ Amazon S3 phpthumbof.s3_key Установите в качестве идентификатора ключа доступа вашей учетной записи Amazon S3, который вы можете найти на странице «Учетные данные безопасности» своей учетной записи Amazon S3.
Amazon S3 Bucket Path phpthumbof.s3_path Путь в вашей корзине Amazon S3, куда вы хотите поместить файлы кеша phpThumbOf.
Секретный ключ Amazon S3 phpthumbof.s3_secret_key Установите в качестве секретного ключа доступа вашей учетной записи Amazon S3, который можно найти на странице «Учетные данные безопасности».
Использовать Amazon S3 phpthumbof.use_s3 После того, как вы настроили все вышеперечисленные параметры, установите для этого параметра значение «Да», чтобы использовать корзину Amazon S3 для хранения кэшированных эскизов.

Если пространство для хранения не является проблемой или вы не используете много различных динамически генерируемых эскизов, вы можете отключить плагин phpThumbOfCacheManager при использовании Amazon S3 для повышения производительности. После очистки кеша сайта или когда phpThumbOf вызывается без кеширования, phpThumbOf проверяет, существует ли уже эскиз на AmazonS3, прежде чем его регенерировать.phpThumbOf по-прежнему будет регенерировать кешированную миниатюру, когда она вызывается без кеширования, а миниатюра старше, чем количество часов, указанное в настройке Amazon S3 Cache Time.

Примеры без изображений¶

phpThumb принимает широкий спектр форматов, если на вашем сервере включен ImageMagick, что позволяет использовать некоторые интересные параметры. Список поддерживаемых форматов может варьироваться в зависимости от вашего провайдера, однако есть несколько интересных вариантов, в том числе:

  • AI
  • AVI
  • EPS
  • M4V
  • MP4
  • PDF
  • PSD

Поддерживаемые форматы ввода A, AI, ART, ARW, AVI, AVS, B, BGR, BMP, BMP2, BMP3, BRF, BRG, C, CALS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DNG, DOT, DPS, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FAX, FITS, FRACTAL, FTS, G, G3, GBR, GIF, GIF87, ГРАДИЕНТ, СЕРЫЙ, GRB, HALD, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, JNG, JP2, JPC, JPEG, JPG, JPX, K, K25, KDC, LABEL, M, M2V, M4V, MAP, MAT, MATTE, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RADIAL-GRADIENT, RAF, RAS, RBG, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VS T, WBMP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, Y, YCbCr, YCbCrA, YUV

Вы можете использовать phpThumbOf для непосредственного взаимодействия с большинством, если не со всеми этими форматами, что позволяет динамически создавать изображения для предварительного просмотра.Если вы предлагаете файлы PDF для загрузки, вы можете создать предварительный просмотр jpg, используя следующее:

  [[* downloadable-pdf: phpthumbof = `w = 610 & f = jpg`]]

[[! phpthumbof? & input = `[[+ pdf-link]]` & options = `& w = 610 & f = jpg`]]
  

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

Устранение неполадок¶

  • Убедитесь, что каталог «assets / components / phpthumbof / cache» создан и доступен для записи PHP
  • .
  • Убедитесь, что ImageMagick установлен и включен в вашей установке PHP.
  • Если ваш хост использует символические ссылки для своей структуры каталогов, убедитесь, что они указывают на правильный, истинный путь в core / config / config.inc.php

См. Также

Вы также можете использовать это как обычный сниппет:

  [[! Phpthumbof? & input = `[[+ filename]]` & options = `& w = 640 & h = 480 & zc = 0 & aoe = 0 & far = 0`]]
  

& aoe = 0 & far = 0 предотвращает увеличение меньших изображений.

Изящный трюк для получения округлых изображений, похожих на шар / сферу, для работы в IE7 / IE8, состоит в том, чтобы добавить к аргументам «& fltr [] = ric | x | x». Замените X на ширину / 2 и высоту / 2. 🙂

Проект размещен на github, где можно сообщать об ошибках.

Адаптивных изображений в MODX с использованием phpThumbsUp

20 мар. Адаптивные изображения в MODX с использованием phpThumbsUp

Отправлено в 02:18 в веб-разработке Дэвид Уолдрон

Обзор

phpThumbsUp — это надстройка MODX, которая манипулирует исходными изображениями для создания миниатюр. Вы можете использовать phpThumbsUp для создания эскизов изображений для галерей, автоматического изменения размера загружаемых пользователем изображений для мобильных устройств или автоматического добавления сложных фильтров изображений к фотографиям.Он основан на популярном пакете phpThumbOf с небольшими отличиями.

Разделы
Скачать
Дополнительные ресурсы

Характеристики

Оптимизированное создание изображений (v1.0.0 +)

Когда на странице используются phpThumbOf или pThumb, при запросе страницы создаются некэшированные изображения. phpThumbsUp, с другой стороны, генерирует изображение, когда изображение запрашивается или когда оно загружается на сервер. Это может показаться не большой разницей, и дело обстоит не тогда, когда все ваши изображения кэшированы, но когда на странице много изображений, создание этих изображений при загрузке страницы может привести к долгому ожиданию, пока клиент увидит контент. , или даже тайм-аут скрипта на сервере.

Предположим, что некэшированной странице требуется 500 мс для обработки запроса и создания страницы, 10 мс для загрузки страницы, 10 мс для загрузки ресурсов CSS / JS, указанных в области , 10 мс для загрузки каждого изображения и 200 мс для обработки. каждое изображение.

phpThumbOf с 1 изображением на странице: всего 730 мс
  1. 500 мс + 200 мс
  2. 10 мс
  3. 10 мс
  4. 10 мс
phpThumbsUp с 1 изображением на странице: всего 730 мс
  1. 500 мс
  2. 10 мс
  3. 10 мс
  4. 10 мс + 200 мс
phpThumbOf с 5 изображениями на странице: всего 1570 мс
  1. 500 мс + 1000 мс
  2. 10 мс
  3. 10 мс
  4. 50 мс
phpThumbsUp с 5 изображениями на странице: всего 1570 мс
  1. 500 мс
  2. 10 мс
  3. 10 мс
  4. 50 мс + 1000 мс

Во всех вышеперечисленных случаях пользователь будет смотреть на белый экран, ожидая загрузки страницы, пока не дойдет до зеленой части диаграммы.В этот момент они увидят страницу, но изображения все равно будут загружаться. Вы можете видеть, что с phpThumbOf время, затрачиваемое на загрузку изображений, загружается заранее, то есть они будут смотреть на белый экран, ожидающий загрузки страницы. С phpThumbsUp они увидят страницу раньше, но изображения не обязательно появятся сразу.

Безопасность (v1.0.0 +)

В некоторых случаях некоторые функции phpThumb могут представлять угрозу безопасности для определенных конфигураций сервера, особенно для параметров, связанных с файлами.Чтобы предотвратить любые злоупотребления, вы можете изменить phpthumbsup.available_options и phpthumbsup.available_filters , чтобы использовать только те параметры, которые вам нужны. Если ни один из ваших больших пальцев не использует никаких параметров, например, кроме высоты, ширины и масштабирования-кадрирования, вы можете изменить доступные параметры на w, h, zc и, например, запретить использование фильтров.

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

Адаптивные изображения (v1.1.0 +)

Начиная с версии 1.1.0, phpThumbsUp имеет необязательную настройку для определения размера экрана используемого устройства при запросе большого пальца и создания изображений меньшего размера для устройств с меньшим размером экрана. Если для параметра phpthumbsup.responsive установлено значение true, короткий фрагмент Javascript автоматически встраивается перед концом тега head , который сохраняет размер экрана клиента в файле cookie. Каждый раз, когда запрашивается изображение, phpThumbsUp проверяет размер экрана клиента и автоматически регулирует ширину / высоту изображения на основе пороговых значений, определенных в настройке phpthumbsup.Ответный_порог .

Например, пороговые значения по умолчанию — 480 и 1024. Таким образом, если клиент использует телефон с размером экрана 320 пикселей и было запрошено изображение с шириной 800, phpThumbsUp изменит ширину на 480 (ближайшее пороговое значение больше или равно размеру экрана).

Если вы хотите сделать это для любого изображения на своем сайте, phpThumbsUp будет работать с любым изображением, даже если не указаны параметры. Вы можете использовать / phpthumbsup / images / big-picture.jpg или /phpthumbsup/src/images/big-picture.jpg, например, . Это автоматически кэширует ваши пороговые изображения, если устройство с меньшим экраном загружает изображение, но оставляет исходную версию нетронутой (и без дублирующего файла кеша).

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

Настройки по умолчанию (v1.1.0 +)

В версии 1.1.0, мы представили новый параметр под названием phpthumbsup.default , который вы можете использовать для установки параметров по умолчанию, которые применяются к каждому изображению, сгенерированному phpThumbsUp. Поскольку эти параметры не отображаются в URL-адресе, они могут игнорировать настройки безопасности phpthumbsup.available_options и phpthumbsup.available_filters . Любое значение по умолчанию автоматически перезаписывается, если соответствующий параметр обнаружен на определенном изображении.

Вы можете использовать этот параметр, чтобы убедиться, что каждое изображение обрезано сверху с zc = T , или, например, для установки качества JPEG по умолчанию с q = 90 .Вы также можете связать их вместе: w = 250 & h = 100 & zc = T & q = 90 .

Другие функции

  • Если файл кэша старше исходного файла, автоматически создается новый файл кэша. (v1.0.0 +)
  • Системная настройка для очистки кеша phpThumbsUp при очистке кеша сайта. (v1.0.0 +)
  • Быстрое создание миниатюр с помощью URL-адресов (нет необходимости в вызове фрагмента на странице) (v1.0.0 +)

Минимальные требования

  • MODX Revolution 2.2
  • PHP 5.3.x
  • ImageMagick 6.x или библиотека GD

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

phpThumbsUp генерирует изображения всякий раз, когда они запрашиваются с вашего базового URL (по умолчанию phpthumbsup /), используя любой из параметров phpThumb.

Выходной фильтр phpThumbsUp

Примечание: этот синтаксис в точности совпадает с синтаксисом phpThumbOf.

Если вы хотите, чтобы phpThumbsUp генерировал URL-адреса для вас, вы можете использовать фрагмент phpThumbsUp в качестве выходного фильтра, например:

 [[* image: phpthumbsup = `w = 100 & h = 100`]] 

Вы также можете традиционно использовать фрагмент phpThumbsUp, например:

 [[phpthumbsup? & input = `assets / images / photo.jpg` & options = `w = 100 & h = 100`]] 

URL-адреса phpThumbsUp

phpThumbsUp использует определенный формат URL, чтобы знать, когда ему нужно создать ползунок и какие фильтры применить. Базовый URL-адрес (вы можете настроить его в системных настройках) — это начало URL-адреса, который идентифицирует его как миниатюру phpThumbsUp. Далее следуют фильтры и исходное изображение. Например…

 /phpthumbsup/w/100/h/100/src/path/to/image.jpg 

… создает миниатюру изображения размером 100×100 пикселей по пути / к / изображению.jpg (относительно корня вашего сайта). / src / указывает конец фильтров, а все, что следует сразу за / src / , является путем к исходному изображению. См. Раздел примеров внизу страницы для получения дополнительной информации.

Автоматическое создание больших пальцев

Создание эскиза, когда пользователь запрашивает его в первый раз, — это хорошо, но еще лучше, если этот эскиз уже сгенерирован до того, как он туда попадет. Если вы хотите автоматически создавать миниатюры, когда пользователь загружает файл через менеджер MODX, вы можете сделать это с помощью phpthumbsup.настройка auto_create.

При загрузке файла phpThumbsUp проанализирует параметр phpthumbsup.auto_create (список URL-адресов phpThumbsUp, разделенных двоеточиями) и применит фильтры, определенные для каталога, в который загружается файл. Например, если параметр содержит…

 / w / 100 / h / 100 / src / assets / images / photos: / w / 800 / h / 800 / src / assets / images / photos 

… затем каждый раз, когда изображение загружается в каталог assets / images / photos, phpThumbsUp создает из него два эскиза (100x100px и 800x800px).Обратите внимание, что URL-адреса здесь НЕ содержат базовый URL-адрес, а вместо этого начинаются непосредственно с фильтров.

Настройки

Ключ Описание Примеры
phpthumbsup.core_path Путь к компоненту phpThumbsUp. НЕ изменяйте это, если у вас нет специальной установки MODX. {core_path} components / phpthumbsup /
phpthumbsup.cache_path Путь к каталогу кеша, в котором phpThumbsUp хранит файлы изображений.Если этой папки не существует, phpThumbsUp попытается ее создать. Убедитесь, что он доступен для записи. {core_path} components / phpthumbsup / cache /
phpthumbsup.base_url Базовый URL для всех изображений, созданных phpThumbsUp. Это никогда не должно совпадать с псевдонимом для одного из ваших ресурсов. палец /
phpthumbsup.auto_create Если установлен один или несколько URL-адресов phpThumbsUp, разделенных двоеточиями, phpThumbsUp автоматически создает эскизы при загрузке изображения через менеджер MODX. / w / 100 / h / 100 / zc / 1 / src / assets / images / photos: / w / 350 / h / 350 / zc / 1 / src / assets / images / photos
phpthumbsup.clear_cache Если установлено значение true, кеш изображений phpThumbsUp будет очищен, когда вы очистите кеш MODX. верно / неверно
phpthumbsup.available_options Список параметров, разделенных запятыми, которые phpThumbsUp распознает и обработает (полный список параметров см. В файле readme для phpThumb) ш, в, зк
phpthumbsup.available_filters Список фильтров, разделенных запятыми (fltr []), которые phpThumbsUp распознает и обработает (полный список фильтров см. В файле readme для phpThumb). борд, серый, сен
phpthumbsup.responsive Если включено, phpThumbsUp автоматически ограничивает размеры изображений по размеру экрана заданными пороговыми значениями. верно / неверно
phpthumbsup.responsive_threshold Разделенный запятыми список пороговых значений размера экрана для создания адаптивных изображений. 480,1024
phpthumbsup.default Если установлено, эти настройки будут применяться ко всем большим пальцам, если они не установлены специально для этого большого пальца. Например, вы можете установить для него значение zc = 1 & fltr [] = gray, чтобы по умолчанию получать черно-белые изображения с обрезанным масштабом. w = 500 и q = 90

Примеры

История изменений

phpThumbsUp 1.1.1

  • Добавлен метод parse_path для преобразования {core_path}, {assets_path} или {base_path} при установке значений в фактические пути (устраняет проблему кеширования).

phpThumbsUp 1.1.0

  • Добавлен порог ширины экрана для адаптивного дизайна.
  • Добавлена ​​настройка «по умолчанию» для параметров phpThumbsUp, которая должна применяться ко всем изображениям по умолчанию.
  • Изменен phpThumbsUp для работы только с src и без параметров

phpThumbsUp 1.0.1

  • Добавлены заголовки ответа сервера для 304 и кеширование браузера
  • Исправлена ​​проблема с пробелами в пути к изображению
  • Изменен каталог кеша для размещения в каталоге кеша MODX
  • Изменен phpthumbsup.настройки base_url, чтобы включить {base_url} в начало

phpThumbsUp 1.0.0

Обработка изображений

с помощью phpThumbOf в MODx Revolution

23 июня 2011 г. | Теги для этой записи: MODx, PHP, веб-разработка

PhpThumbOf — это надстройка MODx Revolution, основанная на популярном скрипте php под названием phpThumb. Он позволяет вам использовать графические библиотеки на сервере Apache для внесения изменений в изображения на лету.

Это запись, основанная на презентации phpThumbOf, которую я сделал на июньской конференции MODx в Хьюстоне, которая демонстрирует некоторые из замечательных вещей, которые мы можем сделать для управления изображениями с помощью phpThumbOf в MODx Revolution.

Я не буду подробно описывать, как загрузить и установить phpThumbOf из репозитория MODx. Я предполагаю, что вы уже скачали и установили надстройку. Нет никаких других надстроек, которые необходимо установить, чтобы это работало.

Эти примеры созданы с использованием MODx 2.1.0 и phpThumbOf 1.2.1-pl .

Примечание: существует также версия этого дополнения для MODx Evolution под названием phpThumb .

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

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

Выходной фильтр MODx позволяет пропускать значение элемента через любой набор фильтров, чтобы изменить его перед загрузкой на страницу. Синтаксис выглядит так

  [[element: modifier = `value`]]  

Первый и наиболее распространенный способ использования phpThumbOf — это использование его в качестве выходного фильтра , присоединение его к основанной на изображении переменной шаблона в MODx.

Чтобы быть внимательным, я собираюсь пройтись по созданию переменной шаблона на основе изображения.

Сначала вы создадите новую переменную шаблона и назовете ее как хотите. Возьмем, например, следующее:

Поля для создания новой переменной шаблона

Затем выберите «Изображение» в качестве типа ввода в разделе «Параметры ввода ».

Выберите «Изображение» в качестве параметра ввода.

Мы выберем следующее изображение в качестве источника нашей переменной шаблона:

Все, что нам нужно сделать, это установить этот ТВ-выход как src нашего изображения.Код для вызова этой переменной шаблона выглядит так:

    

Как мы упоминали в начале, выходной фильтр изменяет элемент до того, как он будет напечатан на странице. Итак, мы присоединяем выходной фильтр phpThumbOf к нашему предыдущему телевизионному вызову, вот так.

  [[* tvImage : phpthumbof = `w = 120 & h = 120` ]]  

Примечание: Если это вызывается внутри файла TPL или блока, то звездочка становится плюсом: [[+ tvImage: phpthumbof = `w = 120 & h = 120`]]

Результатом является вновь созданное изображение на основе изображения, которое вы выбираете для переменной шаблона «tvImage» , размер которого изменяется до 120 пикселей на 120 пикселей.Но если вы заметили, добавил белый фон , чтобы соотношение размеров нашего изображения осталось неизменным.

Размер изображения изменен до 120 на 120 пикселей

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

  [[+ tvImage: phpthumbof = `w = 120`]]  

Он изменяет размер до указанной ширины и просто позволяет высоте упасть до того, что пропорционально этой ширине.

120 пикселей, только ширина. Высота рассчитывается автоматически.

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

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

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

Если мы хотим обрезать его и сделать точно 120 пикселей на 120 пикселей версии нашего изображения, мы добавим опцию масштабирование-кадрирование & zc = 1 .

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

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

Примечание: В этой версии (phpThumbOf 1.2.1-pl) гравитация культур не работает. Итак, изменение значения & zc = на ‘C’, ‘T’, ‘B’, ‘L’, ‘R’, ‘TL’, ‘TR’, ‘BL’, ‘BR’ не изменится область изображения (верхняя, нижняя, левая, правая и т. д.), к которой будет привязана обрезка.Он всегда будет центрально-взвешенным.

Фильтры PhpThumb — там, где действительно начинается веселье

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

Размытие

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

120 пикселей на 120 пикселей со значением размытия 10

Оттенки серого

  [[* tvImage: phpthumbof = `w = 120 & h = 120 & zc = 1  & fltr [] = серый `]]  

120 x 120 пикселей в оттенках серого

Закругленные углы

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

120 на 120 пикселей с закругленными углами

Обратите внимание, как фильтр добавляет белый фон в области без изображения, где есть закругленные углы? Мы можем избавиться от этого, переключив тип изображения с JPG на PNG.

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

120 на 120 пикселей, округлено до PNG

Границы

Мы все хотим добавить границы к изображениям. Конечно, вы можете сделать это с помощью CSS. Но бывают случаи, когда вы можете захотеть сделать это внутри самого изображения. Я не люблю использовать Photoshop для таких простых вещей. Это перебор. Итак, взгляните сразу на такой экземпляр, где я бы использовал phpThumb вместо CSS:

  [[* tvImage: phpthumbof = `w = 120 & h = 120 & zc = 1  & f = png & fltr [] = bord | 5 | 0 | 0 | FFFFFF & fltr [] = rot | -15 | E4F6FE `]]  

Выходной файл PNG, граница 5 пикселей без кривых, белый цвет.Повернут на -15 ° с матовым цветом # E4F6FE, который соответствует фону

Повернуть график

Вращение требует небольшого пояснения. Вы должны указать цвет фона для неграфической области по углам. В этом примере мы используем # 006699. Вращение -45 °

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

120 пикселей на 120 пикселей, повернут на -45 градусов

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

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

120 на 120 пикселей, повернут на -45 ° с качеством JPEG 100

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

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

120px на 120px, повернут на -45 ° с прозрачным PNG

Наложение цвета

Фильтр раскрашивания позволяет вам наложить любой шестнадцатеричный цвет на изображение.Первое значение — это процент, второе — шестнадцатеричное значение.

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

120 на 120 пикселей с наложением 35% цвета # 9

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

  [[* tvImage: phpthumbof = `w = 120 & h = 120 & zc = 1  & fltr [] = серый  & fltr [] = clr | 35 | 9`]]  

120 пикселей на 120 пикселей с 35% -ным наложением цвета # 9 поверх изображения в градациях серого, что дает нам наш двухцветный эффект

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

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

Необходимо установить множество переменных. Проверьте исходную документацию, чтобы увидеть все варианты.

Вот простой текстовый водяной знак с использованием шрифта сервера по умолчанию:

  [[* tvImage: phpthumbof = `w = 120 & h = 120 & zc = 1 & fltr [] = серый  & fltr [] = wmt | Код Белафонте | 3 | T | FFFFFF || 100 | 20 | 0 || 0 |  `]]  

120 пикселей на 120 пикселей с основным текстовым водяным знаком, с выравниванием по верхнему краю, смещением с полем 20%

Прямая обработка изображений

Выходные фильтры

превосходны, но что, если вы просто хотите изменить одно изображение, не создавая для него переменную шаблона? Для этого мы вызываем phpThumbOf как фрагмент, а затем передаем в него URL-адрес изображения и параметры:

    

Вы все равно можете связать фильтры в конце строки запроса параметров.

Примечание: Если вы хотите увидеть все остальные МНОГИЕ доступные параметры, проверьте страницу демонстраций phpThumb.

Примечание: Я не добился, чтобы тени с затуханием работали.

Вы, наверное, думаете обо всех удивительных вещах, которые можно сделать с его помощью, поэтому вам не нужно заходить в Photoshop для простых настроек графики.Это также дает вам возможность позволить пользователям и редакторам контента добавлять графику на страницы и всегда знать, что они будут отформатированы в соответствии с вашими проектными требованиями.

Не стесняйтесь оставлять в комментариях некоторые из ваших замечательных и умных применений phpThumb.

Evo версия этой демонстрации скоро появится.

modx + phpthumbof = {«успех»: ложь, «код»: 401}

Я пытаюсь использовать phpThumb для изменения размера изображений на моем веб-сайте, но это не работает. При использовании следующей ссылки с РЕЖИМОМ ОТЛАДКИ это дает следующий результат.

Из всего этого мое внимание привлекает:

ApacheLookupURIarray () — НЕ ВЫПОЛНЕНО

Я

Ошибка ImageMagick с сообщением (sh: 1 :: Permission denied) в файле «phpthumb.class.php» в строке 2319

IP.com/phpThumb.php?src=img-noticias%2FPORTADASUGERENCIA82.jpg&zc=C&w=239&h=207&hash=a743a31b78ef3454998737fe53afdab1

Результат:

  phpThumb () v1.7.15-2011903
http: // phpthumb.sourceforge.net

phpThumb () версия = 1.7.15-2011903
phpversion () = 7.2.19-0ubuntu0.19.04.2
PHP_OS = Linux
$ _SERVER [SERVER_SOFTWARE] = Apache / 2.4.38 (Ubuntu)
__FILE__ = /var/www/html/aten/aten-ndt/phpthumb.class.php
реальный путь (.) = / var / www / html / aten / aten-ndt
$ _SERVER [PHP_SELF] = /phpThumb.php
$ _SERVER [HOST_NAME] =
$ _SERVER [HTTP_REFERER] =
$ _SERVER [QUERY_STRING] = src = img-noticias / 1.jpg & zc = C & w = 239 & h = 207 & hash = 45a772ad4fb75132fa2ca0888adccc31
$ _SERVER [PATH_INFO] =
$ _SERVER [DOCUMENT_ROOT] = / var / www / html / aten / aten-ndt /
getenv (DOCUMENT_ROOT) = / var / www / html / aten / aten-ndt /

get_magic_quotes_gpc () = ЛОЖЬ
get_magic_quotes_runtime () = ЛОЖЬ
error_reporting () = целое число 32767
ini_get (error_reporting) = строка (5) «32767»
ini_get (display_errors) = строка (1) «1»
ini_get (allow_url_fopen) = строка (1) «1»
ini_get (disable_functions) = строка (384) «pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals, "
get_cfg_var (disable_functions) = строка (384) «pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals, "
ini_get (safe_mode) = ЛОЖЬ
ini_get (open_basedir) = строка (0) ""
ini_get (max_execution_time) = строка (2) «60»
ini_get (memory_limit) = строка (4) «128M»
get_cfg_var (memory_limit) = строка (4) «128M»
memory_get_usage () = целое число 512560

$ this-> config_prefer_imagemagick = ИСТИНА
$ this-> config_imagemagick_path = NULL
$ this-> ImageMagickWhichConvert () = / usr / bin / convert
[фактический используемый путь ImageMagick] = строка (16) "/ usr / bin / convert"
file_exists ([используемый фактический путь ImageMagick]) = ИСТИНА
ImageMagickVersion (false) =
ImageMagickVersion (true) =

$ this-> config_cache_directory = строка (34) "/ var / www / html / aten / aten-ndt / cache /"
$ this-> config_cache_directory_depth = целое число 2
$ this-> config_cache_disable_warning = ЛОЖЬ
$ this-> config_cache_maxage = целое число 2592000
$ this-> config_cache_maxsize = целое число 10485760
$ this-> config_cache_maxfiles = целое число 200
$ this-> config_cache_force_passthru = ИСТИНА
$ this-> cache_filename = string (159) "/ var / www / html / aten / aten-ndt / cache // 6/63 / phpThumb_cache_34.95.213.63__src63efe98491f28588805bb6a266c6c69c_pard302a481f61bc56f3b845af640c540ea_dat1571858082.jpeg "
is_readable ($ this-> config_cache_directory) = ИСТИНА
is_writable ($ this-> config_cache_directory) = ИСТИНА
is_readable ($ this-> cache_filename) = ИСТИНА
is_writable ($ this-> cache_filename) = ИСТИНА

$ this-> config_document_root = строка (27) "/ var / www / html / aten / aten-ndt"
$ this-> config_temp_directory = строка (34) "/ var / www / html / aten / aten-ndt / cache /"
$ this-> config_output_format = строка (4) "jpeg"
$ this-> config_output_maxwidth = целое число 0
$ this-> config_output_maxheight = целое число 0
$ this-> config_error_message_image_default = строка (0) ""
$ this-> config_error_bgcolor = string (6) «CCCCFF»
$ this-> config_error_textcolor = string (6) "FF0000"
$ this-> config_error_fontsize = целое число 1
$ this-> config_error_die_on_error = ИСТИНА
$ this-> config_error_silent_die_on_error = ЛОЖЬ
$ this-> config_error_die_on_source_failure = ИСТИНА
$ this-> config_nohotlink_enabled = ИСТИНА
$ this-> config_nohotlink_valid_domains = array (1) {[0] => string (12) "34.95.213.63 "}
$ this-> config_nohotlink_erase_image = ИСТИНА
$ this-> config_nohotlink_text_message = string (38) «Создание миниатюр вне сервера запрещено»
$ this-> config_nooffsitelink_enabled = ИСТИНА
$ this-> config_nooffsitelink_valid_domains = array (1) {[0] => string (12) "34.95.213.63"}
$ this-> config_nooffsitelink_require_refer = ЛОЖЬ
$ this-> config_nooffsitelink_erase_image = ЛОЖЬ
$ this-> config_nooffsitelink_text_message = string (29) «Изображение взято из 34.95.213.63 "
$ this-> config_high_security_enabled = ИСТИНА
$ this-> config_allow_src_above_docroot = ИСТИНА
$ this-> config_allow_src_above_phpthumb = ИСТИНА
$ this-> config_max_source_pixels = с плавающей точкой 22369621
$ this-> config_use_exif_thumbnail_for_speed = ЛОЖЬ
$ this-> config_border_hexcolor = строка (6) «000000»
$ this-> config_background_hexcolor = строка (6) "FFFFFF"
$ this-> config_ttf_directory = string (33) "/ var / www / html / aten / aten-ndt / fonts"
$ this-> config_disable_pathinfo_parsing = ИСТИНА
$ this-> config_disable_imagecopyresampled = ЛОЖЬ

$ this-> phpThumbDebug = целое 9
$ this-> thumbnailQuality = целое число 75
$ this-> thumbnailFormat = строка (4) "jpeg"
$ this-> gdimg_output = ресурс
$ this-> gdimg_source = resource (закрыто)
$ this-> sourceFilename = string (46) "/ var / www / html / aten / aten-ndt / img-noticias / 1.jpg "
$ this-> source_width = целое число 700
$ this-> source_height = целое число 933
$ this-> thumbnailCropX = целое число 0
$ this-> thumbnailCropY = float 163
$ this-> thumbnailCropW = целое число 700
$ this-> thumbnailCropH = float 606
$ this-> exif_thumbnail_width = строка (0) ""
$ this-> exif_thumbnail_height = строка (0) ""
$ this-> exif_thumbnail_type = строка (0) ""
$ this-> thumbnail_width = число с плавающей запятой 239
$ this-> thumbnail_height = float 207
$ this-> thumbnail_image_width = строка (3) "239"
$ this-> thumbnail_image_height = строка (3) «207»
strlen ($ this-> rawImageData) = 0
strlen ($ this-> exif_thumbnail_data) = 0

$ this-> src = string (46) "/ var / www / html / aten / aten-ndt / img-noticias / 1.jpg "
$ this-> new = NULL
$ this-> w = строка (3) "239"
$ this-> h = строка (3) "207"
$ this-> f = строка (0) ""
$ this-> q = целое число 75
$ this-> sx = NULL
$ this-> sy = NULL
$ this-> sw = NULL
$ this-> sh = NULL
$ this-> far = NULL
$ this-> bg = NULL
$ this-> bc = NULL
$ this-> file = NULL
$ this-> goto = NULL
$ this-> err = NULL
$ this-> xto = NULL
$ this-> ra = NULL
$ this-> ar = NULL
$ this-> aoe = NULL
$ this-> iar = NULL
$ this-> maxb = NULL

builtin_function_exists (exif_thumbnail) = ИСТИНА
builtin_function_exists (gd_info) = ИСТИНА
builtin_function_exists (image_type_to_mime_type) = ИСТИНА
builtin_function_exists (getimagesize) = ИСТИНА
builtin_function_exists (imagecopyresampled) = ИСТИНА
builtin_function_exists (imagecopyresized) = ИСТИНА
builtin_function_exists (imagecreate) = ИСТИНА
builtin_function_exists (imagecreatefromstring) = ИСТИНА
builtin_function_exists (imagecreatetruecolor) = ИСТИНА
builtin_function_exists (imageistruecolor) = ИСТИНА
builtin_function_exists (imagerotate) = ИСТИНА
builtin_function_exists (imagetypes) = ИСТИНА
builtin_function_exists (сравнение_версий) = ИСТИНА
builtin_function_exists (imagecreatefromgif) = ИСТИНА
builtin_function_exists (imagecreatefromjpeg) = ИСТИНА
builtin_function_exists (imagecreatefrompng) = ИСТИНА
builtin_function_exists (imagecreatefromwbmp) = ИСТИНА
builtin_function_exists (imagecreatefromxbm) = ИСТИНА
builtin_function_exists (imagecreatefromxpm) = ИСТИНА
builtin_function_exists (imagecreatefromstring) = ИСТИНА
builtin_function_exists (imagecreatefromgd) = ИСТИНА
builtin_function_exists (imagecreatefromgd2) = ИСТИНА
builtin_function_exists (imagecreatefromgd2part) = ИСТИНА
builtin_function_exists (imagejpeg) = ИСТИНА
builtin_function_exists (imagegif) = ИСТИНА
builtin_function_exists (imagepng) = ИСТИНА
builtin_function_exists (imagewbmp) = ИСТИНА

gd_info.Версия GD = строка (5) "2.2.5"
gd_info.FreeType Support = TRUE
gd_info.FreeType Linkage = string (13) "со свободным типом"
gd_info.GIF Поддержка чтения = ИСТИНА
gd_info.GIF Создать поддержку = ИСТИНА
gd_info.JPEG Support = ИСТИНА
gd_info.PNG Support = ИСТИНА
gd_info.WBMP Support = ИСТИНА
gd_info.XPM Support = ИСТИНА
gd_info.XBM Support = ИСТИНА
gd_info.Поддержка WebP = ИСТИНА
gd_info.BMP Support = ИСТИНА
gd_info.JIS-mapped Japanese Font Support = FALSE

exif_info.EXIF Support = string (7) "включен"
exif_info.EXIF Версия = строка (23) "7.2.19-0ubuntu0.19.04.2"
exif_info. Поддерживаемая версия EXIF ​​= строка (4) "0220"
exif_info.Supported filetypes = string (10) «JPEG, TIFF»

ApacheLookupURIarray () - НЕ ВЫПОЛНЕНО

$ _GET [src] = строка (18) "img-noticias / 1.jpg "
$ _GET [zc] = строка (1) "C"
$ _GET [w] = строка (3) "239"
$ _GET [h] = строка (3) "207"
$ _GET [hash] = string (32) "45a772ad4fb75132fa2ca0888adccc31"
$ _GET [phpThumbDebug] = целое 9

$ this-> debugmessages:
  * phpThumb () v1.7.15-2011903 в файле "phpthumb.class.php" в строке 233
  * setParameter (config_document_root, string (27) "/ var / www / html / aten / aten-ndt") в файле "phpThumb.php "в строке 156
  * setParameter (config_disable_debug, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_high_security_enabled, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_high_security_url_separator, string (1) "&") в файле "phpThumb.php" в строке 156
  * setParameter (config_allow_src_above_docroot, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_allow_src_above_phpthumb, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_auto_allow_symlinks, TRUE) в файле "phpThumb.php "в строке 156
  * setParameter (config_additional_allowed_dirs, array (0) {}) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_directory, string (34) "/ var / www / html / aten / aten-ndt / cache /") в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_disable_warning, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_directory_depth, целое число 2) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_maxage, integer 2592000) в файле "phpThumb.php "в строке 156
  * setParameter (config_cache_maxsize, integer 10485760) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_maxfiles, integer 200) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_source_enabled, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_source_directory, string (41) "/ var / www / html / aten / aten-ndt / cache / source /") в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_source_filemtime_ignore_local, FALSE) в файле "phpThumb.php "в строке 156
  * setParameter (config_cache_source_filemtime_ignore_remote, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_default_only_suffix, string (0) "") в файле "phpThumb.php" в строке 156
  * setParameter (config_cache_prefix, string (28) «phpThumb_cache_34.95.213.63_») в файле «phpThumb.php» в строке 156
  * setParameter (config_cache_force_passthru, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_temp_directory, string (34) "/ var / www / html / aten / aten-ndt / cache /") в файле "phpThumb.php "в строке 156
  * setParameter (config_prefer_imagemagick, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_imagemagick_use_thumbnail, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_imagemagick_path, NULL) в файле "phpThumb.php" в строке 156
  * setParameter (config_max_source_pixels, float 22369621) в файле "phpThumb.php" в строке 156
  * setParameter (config_output_format, string (4) «jpeg») в файле «phpThumb.php» в строке 156
  * setParameter (config_output_maxwidth, целое число 0) в файле "phpThumb.php "в строке 156
  * setParameter (config_output_maxheight, integer 0) в файле "phpThumb.php" в строке 156
  * setParameter (config_output_interlace, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_image_width, целое число 400) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_image_height, целое число 100) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_message_image_default, string (0) "") в файле "phpThumb.php" в строке 156
  * setParameter (config_error_bgcolor, string (6) «CCCCFF») в файле «phpThumb.php "в строке 156
  * setParameter (config_error_textcolor, string (6) «FF0000») в файле «phpThumb.php» в строке 156
  * setParameter (config_error_fontsize, integer 1) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_die_on_error, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_silent_die_on_error, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_error_die_on_source_failure, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_nohotlink_enabled, TRUE) в файле "phpThumb.php "в строке 156
  * setParameter (config_nohotlink_valid_domains, array (1) {[0] => string (12) "34.95.213.63"}) в файле "phpThumb.php" в строке 156
  * setParameter (config_nohotlink_erase_image, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_nohotlink_text_message, строка (38) «Создание эскизов вне сервера запрещено») в файле «phpThumb.php» в строке 156
  * setParameter (config_nooffsitelink_enabled, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_nooffsitelink_valid_domains, array (1) {[0] => string (12) «34.95.213.63 "}) в файле" phpThumb.php "в строке 156
  * setParameter (config_nooffsitelink_require_refer, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_nooffsitelink_erase_image, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_nooffsitelink_watermark_src, string (26) «/demo/images/watermark.png») в файле «phpThumb.php» в строке 156
  * setParameter (config_nooffsitelink_text_message, string (29) «Изображение взято из 34.95.213.63») в файле «phpThumb.php» в строке 156
  * setParameter (config_border_hexcolor, string (6) «000000») в файле «phpThumb.php "в строке 156
  * setParameter (config_background_hexcolor, string (6) «FFFFFF») в файле «phpThumb.php» в строке 156
  * setParameter (config_ttf_directory, string (33) "/ var / www / html / aten / aten-ndt / fonts") в файле "phpThumb.php" в строке 156
  * setParameter (config_http_user_agent, string (114) "Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, например, Gecko) Chrome / 77.0.3865.120 Safari / 537.36") в файле "phpThumb.php" онлайн 156
  * setParameter (config_disable_pathinfo_parsing, TRUE) в файле "phpThumb.php "в строке 156
  * setParameter (config_disable_imagecopyresampled, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_disable_onlycreateable_passthru, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_disable_realpath, FALSE) в файле "phpThumb.php" в строке 156
  * setParameter (config_http_fopen_timeout, целое число 10) в файле "phpThumb.php" в строке 156
  * setParameter (config_http_follow_redirect, TRUE) в файле "phpThumb.php" в строке 156
  * setParameter (config_allow_local_http_src, FALSE) в файле «phpThumb.php "в строке 156
  * setParameter (config_use_exif_thumbnail_for_speed, FALSE) в файле "phpThumb.php" в строке 156
  * phpThumb () v1.7.15-2011903
http://phpthumb.sourceforge.net

ОШИБКА: неверный хеш в файле "phpthumb.class.php" в строке 4197
  * setParameter (src, string (18) "img-noticias / 1.jpg") в файле "phpThumb.php" в строке 389
  * resolvePath: /var/www/html/aten/aten-ndt/img-noticias/1.jpg (allowed_dirs: массив
(
)
) в файле "phpthumb.class.php" в строке 1180
  * resolvePath: проверка отключена, возвращается / var / www / html / aten / aten-ndt / img-noticias / 1.jpg в файле "phpthumb.class.php" в строке 1190
  * setSourceFilename (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) установите для $ this-> sourceFilename значение "/ var / www / html / aten / aten-ndt / img-noticias / 1 .jpg "в файле" phpthumb.class.php "в строке 298
  * setParameter (zc, string (1) "C") в файле "phpThumb.php" в строке 389
  * setParameter (w, string (3) «239») в файле «phpThumb.php» в строке 389
  * setParameter (h, string (3) «207») в файле «phpThumb.php» в строке 389
  * setParameter (hash, string (32) «45a772ad4fb75132fa2ca0888adccc31») в файле «phpThumb.php "в строке 389
  * setParameter (phpThumbDebug, integer 9) в файле "phpThumb.php" в строке 389
  * $ CanPassThroughDirectly = false, потому что $ _GET [zc; hash] установлены в файле "phpThumb.php" в строке 472
  * $ CanPassThroughDirectly = "0" && $ phpThumb-> src = "/ var / www / html / aten / aten-ndt / img-noticias / 1.jpg" в файле "phpThumb.php" в строке 483
  * $ AvailableImageOutputFormats = array (text; ico; bmp; wbmp; gif; webp; png; jpeg) в файле "phpthumb.class.php" в строке 1009
  * $ this-> thumbnailFormat установлен на $ this-> config_output_format "jpeg" в файле "phpthumb.class.php "в строке 1020
  * $ this-> thumbnailQuality установлено на "75" в файле "phpthumb.class.php" в строке 1037.
  * SetCacheFilename () _src устанавливается из md5 ($ this-> sourceFilename) "/var/www/html/aten/aten-ndt/img-noticias/1.jpg" = "63efe98491f28588805bb6a266c6c69c" в файле "phpthumb.class.php" на линии 3591
  * SetCacheFilename () _par устанавливается из md5 (_zcC_h307_w239_dpi150_q75) в файле "phpthumb.class.php" в строке 3624
  * Использовал бы кешированный файл, но пропускал из-за phpThumbDebug в файле "phpThumb.php" в строке 66
  * * Отправил бы заголовки (1): Последнее изменение: среда, 23 октября 2019 г., 21:24:38 по Гринвичу в файле "phpThumb.php "в строке 67
  * * Отправил бы заголовки (2): Content-Type: image / jpeg в файле "phpThumb.php" в строке 69
  * * Посылал бы заголовки (3): Расположение: /cache//6/63/phpThumb_cache_34.95.213.63__src63efe98491f28588805bb6a266c6c69c_pard302a481f61bc56f3b845af640c540ea_dat15718580 "в строке" в строке 72 "
  * resolvePath: /var/www/html/aten/aten-ndt/img-noticias/1.jpg (allowed_dirs: массив
(
)
) в файле "phpthumb.class.php" в строке 1180
  * resolvePath: проверка отключена, возвращается / var / www / html / aten / aten-ndt / img-noticias / 1.jpg в файле "phpthumb.class.php" в строке 1190
  * $ this-> sourceFilename установлено в "/var/www/html/aten/aten-ndt/img-noticias/1.jpg" в файле "phpthumb.class.php" в строке 930.
  * $ this-> cache_filename уже установлено, пропуская SetCacheFilename () в файле "phpthumb.class.php" в строке 3547
  * запуск ExtractEXIFgetImageSize () в файле "phpthumb.class.php" в строке 3389
  * getimagesize (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) говорит, что изображение имеет размер 700x933 в файле "phpthumb.class.php" в строке 3399.
  * $ this-> useRawIMoutput = true после проверки $ UnAllowedParameters в файле "phpthumb.class.php "в строке 1635
  * phpThumb_tempnam () возвращает "/ var / www / html / aten / aten-ndt / cache / pThumb1aQo7r" в файле "phpthumb.class.php" в строке 4426
  * ImageMagickSwitchAvailable (thumbnail) = 0 в файле "phpthumb.class.php" в строке 1571
  * IMuseExplicitImageOutputDimensions = 0 в файле "phpthumb.class.php" в строке 1716
  * getimagesize (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) УСПЕШНО: массив
(
    [0] => 700
    [1] => 933
    [2] => 2
    [3] =>
    [биты] => 8
    [каналы] => 3
    [mime] => изображение / JPEG
)
 в файле "phpthumb.class.php "в строке 1730
  * ImageMagickSwitchAvailable (density) = 0 в файле "phpthumb.class.php" в строке 1571
  * getimagesize (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) вернул [w = 700; h = 933; f = 2] в файле "phpthumb.class.php" в строке 1745
  * исходные размеры установлены на 700x933 в файле "phpthumb.class.php" в строке 1748
  * SetOrientationDependantWidthHeight (), начиная с «700» x «933» в файле «phpthumb.class.php» в строке 3368
  * SetOrientationDependantWidthHeight () установка w = "239", h = "207" в файле "phpthumb.class.php "в строке 3384
  * ImageMagickSwitchAvailable (repage) = 0 в файле "phpthumb.class.php" в строке 1571
  * Пропуск "+ repage", потому что ImageMagick (v) не поддерживает его в файле "phpthumb.class.php" в строке 1832
  * Оставшийся $ this-> fltr после ImageMagick: (array (0) {}) в файле "phpthumb.class.php" в строке 2296
  * ImageMagickSwitchAvailable (качество; чересстрочная развертка) = 0 в файле "phpthumb.class.php" в строке 1568
  * ImageMagick называется ('' '/var/www/html/aten/aten-ndt/img-noticias/1.jpg[0]' -background '#FFFFFF' -flatten -resize 'x319' -gravity center -crop '239x207 + 0 + 0' jpeg: '/ var / www / html / aten / aten-ndt / cache / pThumb1aQo7r' 2> & 1) в файле "phpthumb.class.php "в строке 2314
  * Ошибка ImageMagick с сообщением (sh: 1:: Permission denied) в файле "phpthumb.class.php" в строке 2319
  * удаление "/ var / www / html / aten / aten-ndt / cache / pThumb1aQo7r" в файле "phpthumb.class.php" в строке 2351
  * Ошибка ImageMagickThumbnailToGD () в файле "phpthumb.class.php" в строке 3435
  * SetOrientationDependantWidthHeight (), начиная с «700» x «933» в файле «phpthumb.class.php» в строке 3368
  * SetOrientationDependantWidthHeight () установка w = "239", h = "207" в файле "phpthumb.class.php "в строке 3384
  * Извлечение миниатюр EXIF: (size = 0; type = ""; 0x0) в файле "phpthumb.class.php" в строке 3492
  * запуск SourceImageToGD () в файле "phpthumb.class.php" в строке 3750
  * запуск ImageCreateFromFilename (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) в файле "phpthumb.class.php" в строке 3665
  * ImageCreateFromFilename найдено ($ getimagesizeinfo [2] == 2) в файле "phpthumb.class.php" в строке 3674.
  * Вызов imagecreatefromjpeg (/var/www/html/aten/aten-ndt/img-noticias/1.jpg) в файле "phpthumb.class.php "в строке 3682
  * Не используются данные эскизов EXIF, потому что $ this-> gdimg_source уже установлен в файле "phpthumb.class.php" в строке 3818
  * CalculateThumbnailDimensions (), начинающийся с [W, H, sx, sy, sw, sh], изначально установлен на [700,933 ,,,,] в файле "phpthumb.class.php" в строке 3240.
  * CalculateThumbnailDimensions (), начинающийся с [x, y, w, h], изначально установлен на [0,0,700,933] в файле «phpthumb.class.php» в строке 3255.
  * CreateGDoutput () возвращает холст "239x207" в файле "phpthumb.class.php" в строке 3363
  * ImageResizeFunction ($ o, $ s, 0, 0, 0, 163, 239, 207, 700, 606) в файле "phpthumb.class.php "в строке 4401
  * memory_get_usage () после copy-resize = 489360 в файле "phpthumb.class.php" в строке 430
  * memory_get_usage () после imagedestroy = 489448 в файле "phpthumb.class.php" в строке 432
  * AntiOffsiteLinking () говорит, что это разрешено в файле "phpthumb.class.php" в строке 2558.
  * пропуск AlphaChannelFlatten (), потому что! $ this-> is_alpha в файле "phpthumb.class.php" в строке 2614
  * GenerateThumbnail () успешно завершен в файле "phpthumb.class.php" в строке 444
  * CleanUpCacheDirectory () установлен на очистку (30.0 дней; 10,00 МБ; 200 файлов) в файле "phpthumb.class.php" в строке 748
  * CleanUpCacheDirectory () пропущен, поскольку "/var/www/html/aten/aten-ndt/cache//phpThumbCacheStats.txt" недавно изменен в файле "phpthumb.class.php" в строке 758.
  * imageinterlace ($ this-> gdimg_output, 1) в файле "phpthumb.class.php" в строке 480
  * RenderOutput () пытается imagejpeg ($ this-> gdimg_output) в файле "phpthumb.class.php" в строке 483
  * RenderOutput () завершается с $ this-> outputImageData = 8893 байта в файле "phpthumb.class.php "в строке 597
  * RenderToFile (/var/www/html/aten/aten-ndt/cache//6/63/phpThumb_cache_34.95.213.63__src63efe98491f28588805bb6a266c6c69c_pard302a481f61bc56f3b845a_pard302a481fumb15bc56f3b845a_pard302a481fumb15c56f3b845a_680pat.input.support.input.html
  * Использовал бы кешированный файл, но пропускал из-за phpThumbDebug в файле "phpThumb.php" в строке 66
  * * Отправил бы заголовки (1): Последнее изменение: среда, 23 октября 2019 г., 21:24:38 GMT в файле «phpThumb.php» в строке 67
  * * Отправил бы заголовки (2): Content-Type: image / jpeg в файле "phpThumb.php "в строке 69
  * * Посылал бы заголовки (3): Расположение: /cache//6/63/phpThumb_cache_34.95.213.63__src63efe98491f28588805bb6a266c6c69c_pard302a481f61bc56f3b845af640c540ea_dat15718580 "в строке" в строке 72 "

$ this-> отладка:
  * 1571866156.693490: конструктор phpThumb () в файле "phpthumb.class.php" в строке 232
  * 1571866156.693428: начало phpThumb.php в файле "phpThumb.php" в строке 123
  * 1571866166.694023: phpThumbDebug [0] в файле «phpThumb.php» в строке 215
  * 1571866166.694079: phpThumbDebug [1] в файле "phpThumb.php" в строке 272
  * 1571866166.694112: phpThumbDebug [2] в файле «phpThumb.php» в строке 374
  * 1571866166.694238: phpThumbDebug [3] в файле «phpThumb.php» в строке 410
  * 1571866166.694274: phpThumbDebug [4] в файле «phpThumb.php» в строке 477
  * 1571866166.694283: phpThumbDebug [5] в файле «phpThumb.php» в строке 564
  * 1571866166.694428: пропущено с использованием кэшированного изображения в файле "phpThumb.php" в строке 65
  * 1571866166.694512: phpThumbDebug [6] в файле «phpThumb.php "в строке 580
  * 1571866166.694521: phpThumbDebug [7] в файле «phpThumb.php» в строке 645
  * 1571866166.713554: phpThumbDebug [8] в файле «phpThumb.php» в строке 655
  * 1571866166.715369: пропущено с использованием кэшированного изображения в файле "phpThumb.php" в строке 65
  * 1571866166.715426: phpThumbDebug [9] в файле «phpThumb.php» в строке 688
  * Общее время обработки: 10.021998
  

MODX, phpThumb и другие приложения, написанные на странице Strato ›arne.xyz

· Автор: Арне

Heute gab es auf einer von mir betreuten Веб-сайт с MODX ein merkwürdiges Задача: Начните поиск всех известных Unterseiten waren plötzlich weiß und zeigten keine Inhalte mehr an — der Zugang zum Backend lief noer zum.

Auf der Suche nach der Ursache wollte ich zunächst ins Fehlerprotokoll gucken, aber die Seite im Backend lud sich endlos selbst neu, da das Error-Log zu groß war: 1,1 ГБ!

Per FTP auf dem Server angemeldet, das Fehlerprotokoll, / core / cache / logs / error.log , heruntergeladen und auf dem Server gelöscht.
Die Startseite und All Unterseiten waren daraufhin wieder erreichbar — Симптом behoben, aber die Ursache noch nicht.

Beim Surfen durch die Seite füllte sich das Fehlerprotokoll innerhalb weniger Minuten wieder, je nach Unterseite mit vielen Bildern sogar um einige MB pro Seitenaufruf, sodass das Log schon nach kurzer War Zeit wieder bei 10, 30 MB.

Die Ursache für das große Error-Log war das Modul phpThumb (), das reihenweise Fehlermeldungen wie folgende generierte:

 [15.03.2018 13:20:18] (ОШИБКА @ / mnt / web ### / ## / ## / ######## / htdocs / project / website / core / components / phpthumbof / модель / phpthumbof.class.php: 156) [pThumb] Ресурс: 1 || Изображение: /home/strato/http/premium/rid/##/##/########/htdocs/project/website/assets/gallery/12/126.jpg
Не удалось создать эскиз
Вывод отладки phpThumb:
[0] => phpThumb () v1.7.14-201608101311 в файле "phpthumb.class.php" в строке 229
[1] => setSourceFilename (/ home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website / assets / gallery / 12 / 126.jpg) установить $ this-> sourceFilename в "/ home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website / assets / gallery / 12/126.jpg "в файле" phpthumb.class.php "в строке 294
[2] => $ AvailableImageOutputFormats = array (text; ico; bmp; wbmp; gif; png; jpeg) в файле "phpthumb.class.php" в строке 969
[3] => $ this-> thumbnailFormat установлен на $ this-> config_output_format "jpeg" в файле "phpthumb.class.php" в строке 980
[4] => $ this-> thumbnailFormat установлен на $ this-> f "jpeg" в файле "phpthumb.class.php" в строке 987.
[5] => $ this-> thumbnailQuality установлено на "75" в файле "phpthumb.class.php" в строке 997
[6] => resolvePath: / home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website / assets / gallery / 12/126.jpg (allowed_dirs: массив
(
)
) в файле "phpthumb.class.php" в строке 1140
[7] => resolvePath: итерация, путь = / home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website / assets / gallery / 12/126 .jpg, базовый путь = / mnt / web ### / ## / ## / ######## / htdocs / project / website в файле "phpthumb.class.php" в строке 1159
[8] => resolvePath: остановиться на компоненте 4 в файле "phpthumb.class.php" в строке 1175
[9] => resolvePath: остановиться на пути = / home / strato / http / premium в файле "phpthumb.class.php" в строке 1178
[10] => resolvePath: нет совпадений, возвращается null в файле "phpthumb.class.php "в строке 1180
[11] =>! $ This-> config_allow_src_above_docroot, поэтому установка "" (вне "/ mnt / web ### / ## / ## / ####### / htdocs / project / website") в значение null в файле "phpthumb.class.php" в строке 1344
[12] => $ this-> sourceFilename установлено на "" в файле "phpthumb.class.php" в строке 894
[13] => phpThumb () v1.7.14-201608101311
http://phpthumb.sourceforge.net

Сообщения об ошибках отключены.

отредактируйте phpThumb.config.php и (временно) установите
$ PHPTHUMB_CONFIG ['disable_debug'] = ложь;
чтобы просмотреть подробную информацию об этой ошибке в файле "phpthumb.class.php "в строке 4126
[14] => resolvePath: /home/strato/http/premium/rid/##/##/########/htdocs/project/website/assets/gallery/12/126.jpg (allowed_dirs : Множество
(
)
) в файле "phpthumb.class.php" в строке 1140
[15] => resolvePath: итерация, путь = / home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website / assets / gallery / 12/126 .jpg, базовый путь = / mnt / web ### / ## / ## / ######## / htdocs / project / website в файле "phpthumb.class.php" в строке 1159
[16] => resolvePath: остановиться на компоненте 4 в файле "phpthumb.class.php "в строке 1175
[17] => resolvePath: остановиться на пути = / home / strato / http / premium в файле "phpthumb.class.php" в строке 1178
[18] => resolvePath: нет совпадений, возвращается null в файле "phpthumb.class.php" в строке 1180
[19] =>! $ This-> config_allow_src_above_docroot, поэтому установка "" (вне "/ mnt / web ### / ## / ## / ####### / htdocs / project / website") в значение null в файле "phpthumb.class.php" в строке 1344
[20] => SetCacheFilename () _src, установленный из md5 ($ this-> sourceFilename) "" = "d41d8cd98f00b204e9800998ecf8427e" в файле "phpthumb.class.php "в строке 3520
[21] => SetCacheFilename () _par установлен из md5 (_farC_w970_dpi150_q75) в файле "phpthumb.class.php" в строке 3553
[22] => запуск ExtractEXIFgetImageSize () в файле "phpthumb.class.php" в строке 3314
[23] => пропуск getimagesize (), потому что $ this-> sourceFilename пуст в файле "phpthumb.class.php" в строке 3326
[24] => Ошибка getimagesize ("") в файле "phpthumb.class.php" в строке 3357
[25] => $ this-> useRawIMoutput = true после проверки $ UnAllowedParameters в файле "phpthumb.class.php "в строке 1595
[26] => ImageMagickThumbnailToGD () прерывается, поскольку $ this-> sourceFilename пуст в файле "phpthumb.class.php" в строке 1640
[27] => Ошибка ImageMagickThumbnailToGD () в файле "phpthumb.class.php" в строке 3364
[28] => SetOrientationDependantWidthHeight (), начиная с "x" "в файле" phpthumb.class.php "в строке 3293
[29] => SetOrientationDependantWidthHeight () установка w = "970", h = "0" в файле "phpthumb.class.php" в строке 3309
[30] => Извлечение миниатюр EXIF: (size = 0; type = ""; 0x0) в файле "phpthumb.class.php "в строке 3421
[31] => запуск SourceImageToGD () в файле "phpthumb.class.php" в строке 3679
[32] => Не используются данные миниатюр EXIF, потому что $ this-> exif_thumbnail_data пусто в файле "phpthumb.class.php" в строке 3751
[33] => $ this-> gdimg_source все еще пуст в файле "phpthumb.class.php" в строке 3803
[34] => Ошибка ImageMagickThumbnailToGD () в файле "phpthumb.class.php" в строке 3805
[35] => phpThumb () v1.7.14-201608101311
http://phpthumb.sourceforge.net

Сообщения об ошибках отключены.отредактируйте phpThumb.config.php и (временно) установите
$ PHPTHUMB_CONFIG ['disable_debug'] = ложь;
чтобы просмотреть подробную информацию об этой ошибке в файле "phpthumb.class.php" в строке 4126
[36] => Ошибка SourceImageToGD () в файле "phpthumb.class.php" в строке 374
---------------------- 

»Не удалось создать эскиз« war zunächst das Offensichtlichste und Verständlichste an der Fehlermeldung. Eine Google-Suche danach brachte nur ein Ergebnis, dass leider keine Lösung aber einen wichtigen Hinweis lieferte: Irgendetwastimmt mit den Pfaden zu den Bild-Dateien nicht.

In der Haupt-Konfigurationsdatei /core/config/config.inc.php fiel mir bereits auf, dass es zwei absolute Pfade gibt (Zahlen / IDs durch »#« ersetzt):

  1. / home / strato / http / premium / rid / ## / ## / ######## / htdocs / project / website /
  2. / mnt / web ### / ## / ## / ######## / htdocs / project / website /

Diese waren verschiedenen Einstellungen zugeordnet; jedoch ohne erkennbaren Grund, warum die erste Variante bei der einen Einstellung und die zweite Variante bei einer anderen.Кроме того, на веб-сайтах MODX на хостинге, через All-Inkl.com и Uberspace, а также на других сайтах Einstellungen identityisch.

Strato nutzt zwei absolute Pfade für Web-сайты. Einmal den, ich nenne es mal, »offiziellen« / home / strato / http / premium / rid / ## / ## / ######## / htdocs / ; und den »inoffiziellen« (wahrscheinlich physischen) Pfad / mnt / web ### / ## / ## / ######## / htdocs / .
Ein Blick в PHP-конфигурации, которая имеет значение: der erste Pfad steht auch in den üblichen Server-Variablen wie _SERVER ["DOCUMENT_ROOT"] ; der zweite Pfad tauch in — für mich bisher ungewöhnlichen — Server-Variablen wie _SERVER ["RZ_path"] auf.

Nach einigen Versuchen und wiederholtem Lesen jeder Zeile der Fehlermeldung, war schließlich klar was genau die Ursache für die Fehler-Tirade ist: phpThumb arbeitet mit dem zweiten, inoffiziellen «Pfad, bekommt die aber-von Эрстен, официеллен «Вариант. Und dann, beim »auflösen« der Pfade passiert das, находился в den Zeilen 7–11 bzw. 15–19 der Fehlermeldung steht: phpThumb verlässt den Bereich, den es lesen darf ( docroot также Document Root ) и findet die Bild-Datei nicht — denn für phpThumb sind diese beiden Pfade nichtan, identity wie anscheinend Strato, синоним verwenden.

Die Lösung ist также, die Pfade an phpThumb anpassen : in der /core/config/config.php und der /connectors/config.core.php all Pfade auf die zweite Pfad-Variante umstellen, schon findet phpThumb die Bild-Dateien und die Fehlermeldungen hören auf.

В: Справочная служба компьютера · Теги: modx, php, phpthumb, strato, webdev

Алфавит MODX :: Марк Хамстра

А dd-on будут называться Apps in 2.3, но название не имеет значения — именно расширяемость делает MODX отличным.

B голубой и оранжевый — это то, как раньше выглядел MODX.

Проблемы с C — это ключ к успешному развертыванию MODX, поэтому делайте это правильно и узнайте больше о том, как это работает.

Разработчики D и разработчики D любят MODX по разным причинам.

E volution — это MODX Legacy, который старики не забудут, и некоторые до сих пор его используют.

Форумы — это сердце сообщества.

G lobal лучше всего описал бы сообщество MODX, опираясь на множество доступных переводов.

Количество H сайтов MODX существует, но никто точно не знает, сколько, потому что это невозможно отследить.

I Интегрировать пользовательскую разметку в MODX так же просто, как копировать, вставлять, заменять контент тегами.

J на MODX Weekend 2014 для 15+ сессий MODX & Web goodness, 19-22 сентября 2014 года.

K Профессионалы готовы работать над вашими проектами MODX.

L arge или маленький, MODX справится со всем.

M oreGallery — это то, как клиенты могут легко пройти м галереи, для M ODX Revolution на м или больше.

N ничего не получается.

O pen Source, o f course.

P hpThumbOf получает жесткую конкуренцию со стороны P hpThumbsUp, P hpThumbOn, p Thumb и других.

Q uantum Physics будет возможно в MODX3, или нет.

R TFM предположительно означает R ead The Free Manual , но мы все знаем, что это не так, r ight?

S iteCheck — отличный аддон от героя сообщества и автора Боба Рэя, доступный здесь.

Эмблемы T и флажки T составляют основную часть сайтов MODX. Они простые, но очень мощные.

Пользователи U могут легко и интуитивно управлять всем сайтом с помощью дерева ресурсов в виде карты сайта.

V ersionX может сохранять ваш контент и элементы, когда редакторы делают ошибки, поэтому устанавливайте его, когда вы работаете на сайте.

W eb Content Platform — мой предпочтительный термин для описания w , поскольку MODX превосходит более распространенные CMS или CMF

X PDO лежит в основе MODX и обеспечивает безопасный объектно-ориентированный способ работы с любыми данными.

Y вы можете помочь сделать MODX лучше, сообщая об ошибках и подтверждая их, разрабатывая патчи или предоставляя документацию и учебные пособия.

Буквы Z ero теперь оставлены в алфавите MODX. Теперь разместите свой собственный ..

Разработка сайта MODx в спешке

Vom 14. декабрь 2015 г.

Когда мы обновляли демонстрационный сайт нашей компании (игровая площадка для клиентов), мы поняли, что разработка сайта идет намного быстрее, когда контент и структура уже есть. Не то чтобы мы просто экономили время, которое обычно тратили на настройку структуры. Очень важно иметь структуру на месте.В результате ваша команда разработчиков будет примерно в 20 раз быстрее, чем обычно.

В этой статье мы собираемся рассмотреть несколько вещей, которые мы делали (неправильно) в прошлом, но мы не собираемся делать это снова в будущем, особенно для больших или растущих сайтов.

Разработка сайта MODx — восхитительная работа. По нескольким причинам:

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

Нам всем нравится наша продуктивная свобода в MODx.И, что более важно, нам нравится, как мы можем настраивать диспетчер, переименовывать файлы, добавлять или удалять их, отключать их, иметь очень специфический уровень разрешений под нашим программным обеспечением, с которым мы можем работать, а с чем — нет.

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

Предварительные требования

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

Есть еще несколько, о которых нам нужно знать. На самом деле речь идет не об этих конкретных пакетах, а об уровне вашего опыта разработки сайтов в целом.

Что еще следует знать о
  • Настройка разрешений
  • Настройка отдельного медиа-источника для ваших клиентов
  • Настройка менеджера / формы

Зачем вам об этом знать? Мы обращаемся к тем из вас, кто планирует предоставить своим клиентам «идеальный» продукт, который трудно сломать и который легко поддерживать, даже если он поддерживает сложный веб-сайт.

Делать все в правильном порядке

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

  1. Соберите всей информации, которую вы можете получить о сайте, который вы должны создать
  2. Создайте структуру на сайте, как она будет выглядеть, какой сайт вы хотите создать, образцы страниц, образцы коллекций и т. Д.
  3. Добавьте большинство переменных шаблона и образцы фрагментов (да, большинство из них, вы пропустите хотя бы один :))

После этого можно приступать к работе.Вы можете создавать шаблоны. Вот как это сделать быстро и элегантно:

  1. Выберите шаблон с наибольшим количеством элементов (скорее всего, страница приветствия)
  2. Начните разбивать шаблон на многократно используемые части, которые вы можете использовать в других шаблонах (заголовок, нижний колонтитул, новости, участники, welcomeSlider и т. Д.).
  3. Установите и запустите этот шаблон one , собрав всю информацию из связанных ресурсов и т. Д.
  4. После этого скопируйте из этого шаблона и повторно используйте уже проделанную работу.Это намного быстрее, когда у вас уже есть все готовые к работе и извлеченные из них фрагменты.
  5. Когда все будет готово, вы можете приступить к настройке параметров менеджера, разрешений и всего остального. Это также работа, которую необходимо выполнить last , потому что вы можете дублировать свои наборы настроек, что также сэкономит вам много работы.

К настоящему времени ваши шаблоны должны выглядеть чистыми и простыми (как и ваши формы). К настоящему времени большая часть кода шаблона должна уместиться в одном окне.Если есть еще несколько огромных блоков HTML, подумайте, не являются ли они чем-то избыточным, что принадлежит чунлу.

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

Избегайте «дорогих» фрагментов

Мы использовали getResources, WayFinder, getPage и несколько других почти на каждом сайте, который мы создали в прошлом, что было хорошо для страниц среднего размера, но как только у нас было несколько запросов на получение связанных данных на одной странице, все стало замедляться. существенно.

Кэширование базы данных, переход на memcache, множество других улучшений, которые, похоже, не имели значения. Но ждать! Было множество реликвий разработки: почти половина вызовов наших сниппетов были некэшированными. Это дало некоторые улучшения. Но все равно страница загружалась около 2 секунд.

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


Это может показаться не таким уж большим, но это экономит половину времени рендеринга.Либо $ chunk1, либо $ chunk2 останется заключенным в две дополнительные скобки, что приведет к тому, что MODx будет разрешать только результат вместо рендеринга каждого отдельного фрагмента.

Если вы еще этого не сделали, возможно, вы все еще используете фрагмент «Если». Удалите его и используйте вместо него выходные фильтры. Если действительно медленно.

getResources, getPage, WayFinder

… все можно заменить пакетом под названием «pdoTools». Использование эквивалентов pdoTools для упомянутых выше фрагментов ускорит вашу страницу в среднем в 10 раз.

Причина этого — во избежание ненужных звонков. Так что у этого подхода есть и недостатки. Поскольку pdoTools использует xpdo напрямую вместо использования getCollection, это также означает, что он обходит безопасность MODx, поэтому разрешения и все, что в них нуждается (что не так на большинстве сайтов, потому что большинство сайтов не имеют большой логики или другого пользователя -groups) потребуется активировать вручную. Тем не менее, есть флаг под названием & checkPermissions, чтобы включить их, если они вам понадобятся.

Однако в большинстве случаев в этом нет необходимости, поэтому вы можете безопасно использовать pdoTools в качестве замены для ваших вызовов.

Прочие отличия:

includeTVs : это не флаг 0 или 1 в pdoResources, а список конкретных телевизоров, которые нужно захватить, что делает его тоньше и быстрее, чем getResources

родителей : наконец-то согласовано. pdoMenu не использует startId вместо родителей, и флаги tpl немного отличаются. Помимо этого, это прямая замена Wayfinder.Поскольку вы, скорее всего, отобразите меню на ВСЕХ своих страницах, включая нижний колонтитул и другие меню, изменение этого параметра сильно повлияет на производительность ваших сайтов.

pdoPage также более удобен и больше не нуждается в этом неортодоксальном синтаксисе.

Вместо того, чтобы читать это, вам, вероятно, следует прочитать документацию pdoTools и попробовать.

pThumb, изменение размера, getCache, MinifyX, autoFixImageSize

Есть также множество других сниппетов, которые заменяют «дорогие», завершают вещи, которые увеличивают загрузку страницы и которые в большинстве случаев просто неправильно настроены (или отсутствуют).Многие люди забывают изменять размер фоновых изображений, изображений слайдеров и общего содержимого, и, что более важно, иметь pthumb отрисовывать их с качеством 85% и принудительно форматировать их в jpg, чтобы избежать bmps, tiffs и png для огромных изображений. Это значительно уменьшит размер вашей страницы. Просто прочтите, что делают другие фрагменты.

Общие улучшения

На самом деле это не относится к улучшениям MODx, но не меняет того факта, что эти факторы значительно улучшают производительность.

MinifyX не может объединить все Javascript и CSS, иногда это все портит. Но ты можешь. После завершения создания сайта вы можете использовать компилятор Google Closure Compiler, чтобы загрузить только ОДИН минифицированный файл javascript вместо загрузки тонны отдельных файлов.

Уменьшите размеры изображений, уменьшите размер файлов CSS и постарайтесь придерживаться вышеуказанных правил.

Разработка сайта не должна занимать у вас более двух дней, если нет необходимости в индивидуальной разработке. Но соблюдение правильного порядка и выполнение задач с первого раза должно сэкономить вам много времени.

Итог

Избегайте getResources, избегайте WayFinder, замените phpThumbof на pthumb, настройте кэширование базы данных, замените большую часть используемого вами материала эквивалентом pdoTools и начните делать вещи в правильном порядке.

Как сказал бы Монах:

Вы меня потом поблагодарите.
Приложение

Для вашего удовольствия вот несколько вещей, в которых мы пошли не так:

# 1 После того, как мы спланировали сайт для нашего клиента, мы начали разработку сайта, добавили к нему много данных, настроили модные страницы для ссылок и членов команды, настроили для всех них настройки менеджера и представили работу, которую мы уже пришлось им, чтобы они могли видеть, как легко поддерживать свою информацию.

— Оказывается, колебания сотрудников слишком велики, чтобы назвать кого-либо из членов команды, фотографий не существует, а ссылки / портфолио не нужны, потому что они не хотят, чтобы кто-то знал, кто их клиенты. Большинство из них — конкуренты. Возможно, у нас была возможность сначала спланировать структуру сайта. Мы как бы упустили это.

# 2 Один и тот же клиент дает нам много информации. Мы исходим из уже имеющихся у нас шаблонов и начинаем исправлять. Наряду с этим большинство настроек менеджера, потому что клиенты хотели начать поддерживать свои продукты, пока мы имеем дело с шаблонами.

— каждые две недели мы добавляли еще одно поле, еще одно поле, дополнительное изображение и прикрепленный к нему файл PDF. Тогда PDF-файл должен быть изображением первой страницы PDF-файла, и он должен быть интерактивным. После этого нужно было подсчитать количество скачиваний файла.

Примерно через шесть недель клиенты спрашивают: «Можно ли вообще просто вести список общей информации вместо того, что мы только что добавили». — на этом этапе вы можете захотеть убить своего клиента.Но с другой стороны, это наша вина. Сначала мы должны были собрать всю эту информацию, и мы должны были сделать предложение о том, как сохранить и представить эту информацию.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *