Imagestring垃圾文本问题

时间:2016-07-07 12:27:24

标签: php

我尝试在图片上添加文字:

$newImg = imagecreatetruecolor($dst_width, $dst_height);
imagealphablending($newImg, false);
imagecopyresampled($newImg, $im, 0, 0, 0, 0, $dst_width, $dst_height, $width, $height);

imagesavealpha($newImg, true);
    if(!empty($name)){  
    $fontSrc   = './fonts/DejaVuSans.ttf';//support utf8 and unicode
    $font = imageloadfont($fontSrc);
        //Couleur des noms
        $bg = imagecolorallocatealpha($newImg, 0, 0, 0, 0);     
        $textcolor = imagecolorallocatealpha($newImg, 255, 255, 255, 1);

        //Deplacer les noms
        imagestring($newImg, $font, 0, $dst_height - 17, 'שדגשדג', $textcolor);
    }

已经尝试过:

header('Content-Type: text/html; charset=utf-8');
imagestring($newImg, 500, 0, $dst_height - 17, utf8_encode('שדגשדגש'), $textcolor);

问题是当我把文本放入希伯来语(utf8)时:שדגשד它显示图片上的文字:

image example

正如你可以看到它的类型垃圾文本,修复它的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

好的,经过深入的研究和大量的测试后我终于实现了它,现在可以使用utf8字符,问题是图像字符串无法使用utf8 ,我应该更改为imagettftext并加载支持utf8支持的ttf字体:

    putenv('GDFONTPATH=' . realpath('.'));
    $fontGD   = './fonts/DejaVuSans';
    imagettftext($newImg, 20, 0, 10, 20, $black, $fontGD, 'שגשדג');

多数民众赞成,现在正在运作。