ResizeOnUploadPhpthumbon_modx

Загрузка изображений и их обрезка в менеджере файлов.
Нужно было решение (оптимизация загрузки больших изображений) пошел гулить нашел решение у bezumkin-а там плагин реализован через phpThumbof но этот сниппет не понимает кириллицу или другие знаки в именах файла (в коде сниппета не стал копаться) и решил использовать phpThumbon и переписал код.
С помощью этого плагина у вас не будет конфликтов с контент менеджерами, которые заливают фото на сайт весом по 5мб))

Плагин зависит от сниппета phpThumbon
<?php
//Обработчик
$snippet = "phpthumbon"; //phpthumbof ps: phpthumbof не обрабатывает имена фалов содержащие []
//Настрйка обработки изображения
$width =    isset($scriptProperties['width']) ? $scriptProperties['width'] : 1070;
$height =   isset($scriptProperties['height']) ? $scriptProperties['height'] : 1070;
$crop =     isset($scriptProperties['crop']) ? $scriptProperties['crop'] : 0;
$format =   isset($scriptProperties['format']) ? $scriptProperties['format'] : "jpg";
$quality =  isset($scriptProperties['quality']) ? $scriptProperties['quality'] : "75";

$eventName = $modx->event->name;
switch ($eventName) {

    case 'OnFileManagerUpload':

        // настройки media source
        $directory = $source->properties['basePath'].$directory;
        
        //Поддерживаемые изображения
        $extensions = explode(',', $modx->getOption('upload_images'));


        //Тип файла
        $extData = explode("/", $files["file"]["type"]);
        $extType = $extData[1];

        //Проверка на совместимость
        if (in_array($extType, $extensions)) {
            $file = $files["file"];

            $imgPath = $directory . $file['name'];

            $tmpImg = $modx->runSnippet($snippet, array('input' => $imgPath, 'options' => "&w=$width&h=$height&zc=$crop&f=$format&q=$quality"));
            $tmpImg = str_ireplace("//", "/", MODX_BASE_PATH . $tmpImg);

            rename($tmpImg, MODX_BASE_PATH . $imgPath);
        }
        break;
}
Настройка плагина во вкладке «Параметы»


Скачать: git
vectorserver
08 апреля 2020, 23:57
modx.pro
5
1 527
+10
Поблагодарить автора Отправить деньги

Комментарии: 9

iWatchYouFromAfar
09 апреля 2020, 01:58
1
+1
Зачем это все и зачем phpthumbon, когда есть phpthumb из коробки?

modx.pro/development/16940
    Павел Бигель
    09 апреля 2020, 09:44
    0
    phpthumbon работает лучше — факт
      iWatchYouFromAfar
      09 апреля 2020, 16:26
      +1
      Если мы говорим про компоненты, то я на своих сайтах использую pthumb, потому что там гибко можно управлять кэшированными изображениями.

      Что лучше и быстрее, я не знаю. Факты нужно подкреплять чем-то.
        vectorserver
        09 апреля 2020, 20:29
        -1
        Используй кто тебе мешает? Зачем навязывать это другим?
        Мне лично очень нравится phpThumbOn в плане оптимизации, а не обработчик из коробки, предложил свою идею, а тебе и по истории твоих комменотов, ты каждую фичу считаешь (не вижу смысла в этом компоненте, т.к.… бла бла бла) если не с кем поговорить заведи попугая.
          iWatchYouFromAfar
          09 апреля 2020, 20:53
          0
          А ты своим готовым решением разве не навязываешь другим? Может тебе лучше завести попугая и ему рассказывать что ты изобрел очередной велосипед? Ты че такой дерзкий-то? Выложил готовое решение, значит будь готов к диалогу.

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

          Phpthumbon и прочие компоненты, больше нужны для формирования миниатюр. И вот тут возможно phpthumbon действительно быстрее. Но я перешел на pthumb, в скорости он не проигрывает, во всяком случае, я не заметил этого. А вот в возможностях управления кэшированными версиями картинок — он выигрывает уж точно.
            vectorserver
            09 апреля 2020, 20:56
            0
            Не понимаю зачем кешировать, если можно пользоваться уже залитым оптимизированным изображением или ты имеешь ввиду кешированные для админки?
              iWatchYouFromAfar
              09 апреля 2020, 21:16
              +2
              Мы от темы отошли. Твой плагин оптимизирует изображения при загрузке. Зачем тут использовать сторонний компонент, я без понятия…

              Отвечаю на твой вопрос, почему я выбрал pThumb вместо phpThumbOn:

              1. Оригинал изображения сохраняется в первозданном виде.
              2. pThumb может генерить сколько угодной версий размеров миниатюр и они удаляются, если я удаляю сам оригинал. Не копиться мусор в виде неиспользуемых картинок.
              3. Несколько уровней очистки изображений. Либо вообще не очищать их, либо очищать в зависимости от системной настройки Max Cache, либо очищать все.
              4. Есть настройки для использования сервиса амазона S3 (правда пока не использовал еще).
                vectorserver
                09 апреля 2020, 21:32
                0
                Ну вот!
                — Мне оригинал на сервере не нужен (лишний вес)
                — при удалении оригинала phpthumbon не будет генерить, а отдаст заглушку

                Зы: я понимаю, если у тебя портал картинок и или чертежей где нужно держать оригинал.
                Но для этого тоже можно сделать несколько размеров (версий 1.2.3.4) при загрузке изображения
                  iWatchYouFromAfar
                  09 апреля 2020, 21:41
                  +2
                  Заглушку можно поставить и без pThumb или phpThumbOn. Это вопрос шаблонизации. Я не убеждаю тебя что phpThumbOn хуже или лучше. Мой вопрос был, зачем он нужен для оптимизации изображений при загрузке?

                  Если оригинал имеет большие размеры, его можно оптимизировать через phpthumb. Для этого не нужно ставить ни pThumb, ни phpThumbOn. Понимаешь?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9