Yii2使用yii2-imagine在没有图像标签的浏览器中渲染图像

时间:2018-02-23 08:23:58

标签: yii2 php-imagine

我正在使用yii2-imagine

$imagine = yii\imagine\Image::getImagine();
Imagine->open('path/watermark.jpg')->show('jpg');

我的问题是它没有显示图像,它表明:

����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality ��C    $.' ",#(7),01444'9=82<.342��C  2!!22222222222222222222222222222222222222222222222222����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�%�

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要首先使用getImagine()函数来调用GDImagick哪个可用实例,然后在对象上调用->open()->show()。此外,您还需要为图像提供$options。您可以将以下代码复制粘贴到控制器中的操作中,并可以查看结果图像。我刚刚在我的本地系统上测试过它正在工作,只记得提供$source变量的有效路径

use yii\imagine\Image;    

$source="/path/to/your/image.jpg";        
$imagine = new Image();

$options = array(
            'resolution-units' => \Imagine\Image\ImageInterface::RESOLUTION_PIXELSPERINCH,
            'resolution-x' => 300,
            'resolution-y' => 300,
            'jpeg_quality' => 100,
        );

echo $imagine->getImagine()->open($source)->show('jpg',$options);

除了上述在浏览器中显示图像的解决方案,如果要在img标记内显示图像,您可以base64_encodeopen()方法返回的原始图像数据并提供如下标签。

echo '<img src="data:image/jpeg;base64,'.base64_encode($imagine->getImagine()->open($source)).'" >';

希望有所帮助