laravel 使用Intervention/Image 图片写入中文报错

作者:admin 发布:2018-06-25 浏览:2492次
$qrcode = QrCode::format('png')->size(300)->generate('Make me into an QrCode!');
$image = Image::make($qrcode)->resize(300,300)
    ->text('二维码图片', 150, 270, function($font) {
        $font->file('msyh.ttf');
        $font->size(20);
        $font->color('#66FF99');
        $font->align('center');
        $font->valign('top');
    })->save('aaa.png');


图片中写入中文字符串会出现错误:

ErrorException (E_WARNING)
imagettfbbox(): any2eucjp(): invalid code in input string
搜索问题,都是说
重新编译PHP,取消–enable-gd-jis-conv这个参数。

PHPinfo后,发现确实存在此参数,去掉重新编译,还是未解决问题。


blob.png


最终的解决方案是自定义了辅助函数:



function to_unicode($string)
{
    $str = mb_convert_encoding($string, 'UCS-2', 'UTF-8');
    $arrstr = str_split($str, 2);
    $unistr = '';
    foreach ($arrstr as $n) {
        $dec = hexdec(bin2hex($n));
        $unistr .= '&#' . $dec . ';';
    }
    return $unistr;
}

将输入的字符串转换下,问题得到解决。

Comments (0)