【问题标题】:Imagick possibly incorrectly encoded Yii2Imagick 可能错误编码 Yii2
【发布时间】:2022-02-01 22:27:33
【问题描述】:

当我在 Yii2 中使用 imagick 时,我收到错误消息:

"Malformed UTF-8 characters, possibly incorrectly encoded.",

如果我在任何 php 文件中使用 yii2 之外的 imagick,它会起作用我确实采用了相同的代码并发布在视图文件中,但我得到了错误

在 Yii2 视图之外:

$img = 'http://127.0.0.1/web/project/uploads/imgl/d954b1f84f91ef24ce483922f2540c4b16704766371643751220/eaa190e9a65a7e120b1b37a297eff15c2027545943.jpg';
$gll = new Imagick($img); 
header('Content-type: image/jpeg'); 
$gll->blurImage(7, 3);
echo $gll;

在 Yii 的视图文件中:

<?php 
                    $img = 'http://127.0.0.1/web/project/uploads/imgl/d954b1f84f91ef24ce483922f2540c4b16704766371643751220/eaa190e9a65a7e120b1b37a297eff15c2027545943.jpg';
                    $gll = new Imagick($img); 
                    header('Content-type: image/jpeg'); 
                    $gll->blurImage(7, 3);
                    echo $gll;
                ?>

【问题讨论】:

  • 尝试将header('Content-type: image/jpeg'); 标头移动到控制器。您可能会遇到标头已发送错误。
  • @KevinY:同样的错误

标签: php yii2 imagick


【解决方案1】:

视图文件不是为处理二进制数据而设计的。而是有两条单独的路由:一条用于直接从控制器生成图像,另一条可以通过链接到视图中使用 IMG。

或者,如果你不想离开视图,你也可以这样修改:

echo '<img src="data:image/jpg;base64,' . base64_encode($gll->getImageBlob()) . '" alt="" />';

但建议的解决方案是有两条单独的路线,一条用于生成图像,另一条用于使用图像。生成图像时,无需将其与视图复杂化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多