Joomla onContentBeforeSave - 调整图像大小
Joomla onContentBeforeSave - resize image
我想为 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 功能)。
我如何return 应该保存调整大小的图像?
您可以看看以下两种解决方案之一:
'Easy Image Resizer' 一个可以做你想做的事情的插件 https://extensions.joomla.org/extension/eir-easy-image-resizer/
'Quantum Manager' 一个新组件,用于替换和扩展您所知道的标准 mediamanager。从调整大小到修改的大量功能 https://extensions.joomla.org/extension/quantum-manager/
我是这样解决问题的:
挂钩 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);
}
}
}
我想为 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 功能)。
我如何return 应该保存调整大小的图像?
您可以看看以下两种解决方案之一:
'Easy Image Resizer' 一个可以做你想做的事情的插件 https://extensions.joomla.org/extension/eir-easy-image-resizer/
'Quantum Manager' 一个新组件,用于替换和扩展您所知道的标准 mediamanager。从调整大小到修改的大量功能 https://extensions.joomla.org/extension/quantum-manager/
我是这样解决问题的: 挂钩 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);
}
}
}