【问题标题】:Joomla onContentBeforeSave - resize imageJoomla onContentBeforeSave - 调整图像大小
【发布时间】:2019-11-10 20:36:27
【问题描述】:

我想为 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函数)。

我怎样才能返回应该保存的调整大小的图像?

【问题讨论】:

  • 似乎是在Joomla Stack Exchange(Joomla 开发人员闲逛的地方)发帖的好问题。
  • @mickmackusa 谢谢,我不知道这个地方存在!
  • Joomla 用户太少了——这就是我关注这里的事情以及 JSE 的原因。可悲的是,许多 joomla 标记的问题在 Stack Overflow 上没有得到解决。这可能会让您的创意源源不断:forum.joomla.org/viewtopic.php?t=818457
  • 你可以试试powr.io/tutorials/… 或者看看幕后。
  • @mickmackusa 感谢分享这些链接。不幸的是,他们并没有真正有帮助:(用户没有分享他们的成就。

标签: php plugins joomla joomla3.0


【解决方案1】:

您可以查看以下两种解决方案之一:

  1. 'Easy Image Resizer' 一个可以做你想做的事情的插件https://extensions.joomla.org/extension/eir-easy-image-resizer/

  2. “Quantum Manager”是一个新组件,可替代和扩展您所知道的标准媒体管理器。从调整大小到修改的大量功能https://extensions.joomla.org/extension/quantum-manager/

【讨论】:

  • Stack Overflow 不允许推荐第 3 方资源。这不是对 JSE 的限制。
【解决方案2】:

我解决了这样的问题: 挂钩 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);
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多