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

Yii2 render image in browser without image tag using yii2-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��br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� �%�

有什么想法吗?

您需要先使用 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)).'" >';

希望对您有所帮助