Joomla onContentBeforeSave - изменить размер изображения - PullRequest
0 голосов
/ 10 ноября 2019

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

Что я пробовал до сих пор:

<?php

defined('_JEXEC') or die('Restricted access');

class PlgSystemEasyImageResizer extends JPlugin
{
    protected $allowedMimeTypes = array('image/jpeg', 'image/png', 'image/gif');


    public function onContentBeforeSave($context, $article, $isNew)
    {
        if ($context == 'com_media.file') {
            JFactory::getApplication()->enqueueMessage('MY MESSAGE');

            JFactory::getApplication()->enqueueMessage(strval($article));
            JFactory::getApplication()->enqueueMessage(var_dump($article->tmp_name));
            JFactory::getApplication()->enqueueMessage(var_dump($article->path));
            JFactory::getApplication()->enqueueMessage(var_dump($article->type));
        }
        return true;
    }
}

Но после загрузки я получаю только следующие сообщения:

MY MESSAGE
Joomla\CMS\Object\CMSObject
Fertig hochgeladen: /AAAAAAAAA.jpg

Как я могу получить изображение с этого объекта иизменить его размер? (Я хочу использовать встроенные функции php).

А как я могу вернуть измененное изображение, которое должно быть сохранено?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Я решил проблему следующим образом: подключитесь к событию afterSave и отредактируйте изображение после его сохранения.

    public function onContentAfterSave($context, $article, $isNew)
    {
        if ($context == 'com_media.file') {
            // JFactory::getApplication()->enqueueMessage('Filepath: ' . $article->filepath);
            if ($article->type == 'image/jpeg' or $article->type == 'image/png') {
                $orig_image = new JImage($article->filepath);
                // 750 will be set accordind to image ratio depending on 1000
                $resized_image = $orig_image->resize(1000, 750, true, JImage::SCALE_INSIDE);
                $resized_image->toFile($article->filepath);
            }
        }
    }
0 голосов
/ 11 ноября 2019

Вы можете взглянуть на одно из следующих решений:

  1. 'Easy Image Resizer' плагин, который делает то, что вы хотите сделать https://extensions.joomla.org/extension/eir-easy-image-resizer/

  2. «Quantum Manager» - новый компонент, который заменяет и расширяет известный вам медиа-менеджер. Множество функций от изменения размера до изменения https://extensions.joomla.org/extension/quantum-manager/

...