新闻中心

记录团队成长点滴以及对技术、理念的探索,同时我们乐于分享!

Laravel使用Intervention/Image图片添加文字乱码问题

2020-07-06 13:15:08 分类:技术学堂

    今天在做项目的时候,需要把科室的ID添加在二维码上,使用Intervention/Image扩展包来实现这个功能,刚开始代码如下:

$image = Image::make($path.$keshiQrcode)->text('科室ID:'.$unique_id, 150, 10, function($font) {
    $font->file(public_path('css/font.ttf'));
    $font->size(20);
    $font->align('center');
    $font->valign('top');
});
 $image->save($path.$filePath);


这样生成的图片"科室ID" 就 会乱码,如下图:



 解决方法需要把中文转码一下,实现代码如下:

$text = $this->to_unicode('科室ID:'.$unique_id);
   $image = Image::make($path.$keshiQrcode)->text($text, 150, 10, function($font) {
       $font->file(public_path('css/font.ttf'));
       $font->size(20);
       $font->align('center');
       $font->valign('top');
   });
    $image->save($path.$filePath);
    
   // to_unicode转码
    
  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;
}