如何在YII中调整图像大小?

时间:2013-09-25 15:58:01

标签: php yii

当我尝试加载图像并调整其大小时:

$image = Yii::app()->image->load($path);
$image->resize(400, 100);

我收到此错误

Property "CWebApplication.image" is not defined.

我已尝试在配置文件中输入:

'image'=>array(
          'class'=>'application.extensions.image.CImageComponent',
            // GD or ImageMagick
            'driver'=>'GD',
            // ImageMagick setup path
            'params'=>array('directory'=>'/opt/local/bin'),
        ),

无论如何我得到一个错误,如何在任何想法中调整图像大小?,是否有任何本地课程可以处理图像?

3 个答案:

答案 0 :(得分:3)

配置应用程序组件时,将它们放在components配置部分中,似乎您将图像组件放在错误的位置。

这应该有效:

return [
    // ....
    'components' => [
        'image' => [
            'class' => 'application.extensions.image.CImageComponent',
            // GD or ImageMagick
            'driver' => 'GD',
            // ImageMagick setup path
            'params' => ['directory' => '/opt/local/bin'],
        ],
    ]
];

答案 1 :(得分:1)

我认为它的反应太迟了。但它会帮助别人。我遇到了类似的问题。我通过以下方法修复它。

根据您的问题,我了解到您在yii中使用了名为"image"的扩展程序。在扩展本身的页面中,他们给出了一个名为"usage"的描述。我跟着修复了。

我在使用文档中添加了一些注释,并在下面添加了可能导致该问题的注释。

以下代码是配置文件(config / main.php)中的组件注册:

'import'=>array(
    ...
    'application.helpers.*',
    ...
),

可能你可能在下面的部分中犯了错误。您需要在config / main.php文件的components部分中注册“image”组件。

'components'=>array(
       'image'=>array(
          'class'=>'application.extensions.image.CImageComponent',
            // GD or ImageMagick
            'driver'=>'GD',
            // ImageMagick setup path
            'params'=>array('directory'=>'/opt/local/bin'),
        ),...
)

请参阅以下代码示例:

$image = Yii::app()->image->load('images/test.jpg');
$image->resize(400, 100)->rotate(-45)->quality(75)->sharpen(20);
$image->save(); // or $image->save('images/small.jpg');//You missed this line

(或)你也可以使用如下,而不在config / main.php文件中注册图像组件。

Yii::import('application.extensions.image.Image');
$image = new Image('images/test.jpg');
$image->resize(400, 100)->rotate(-45)->quality(75)->sharpen(20);
$image->render();

答案 2 :(得分:0)

您必须在配置文件“main.php”

中添加ImageMagick设置路径

这里是windows的样本

'image'=>array(
        'class'=>'application.extensions.image.CImageComponent',
        // GD or ImageMagick
        'driver'=>'GD',
        // ImageMagick setup path
        'params'=>array('directory'=>'D:/Program Files/ImageMagick-6.4.8-Q16'),
    ),

for linux

'image'=>array(
        'class'=>'application.extensions.image.CImageComponent',
        // GD or ImageMagick
        'driver'=>'GD',
        // ImageMagick setup path
        'params' => array('directory' => '/usr/bin'),
    ),

然后您可以像这样调整图像大小

$image = Yii::app()->image->load('images/test.jpg');
$image->resize(400, 100)->rotate(-45)->quality(75)->sharpen(20);
$image->save(); // or $image->save('images/small.jpg');

使用流动的扩展名 image extension