2011-03-16 7 views
0
perl -e 'binmode(STDOUT, ":utf8"); \ 
    print "\x{201C}Unicode \x{2018}\x{263A}\x{2019} Please\x{201D}";' |\ 
     convert -background lightblue -fill blue -pointsize 36 \ 
       label:@- label_unifun.gif 

PHP에서 동일한 결과를 얻기 위해 ImageMagick 설명서를 따르려고합니다. 그러나 지금까지 결과가 없습니다. 이것은 내가 가지고있는 것입니다 :PHP ImageMagic 유니 코드 문자

$draw = new ImagickDraw(); 
$draw->setTextEncoding('UTF-8'); 
$draw->setFontSize(52); 

$draw->setFont("font.otf"); 
$draw->setStrokeAntialias(TRUE); 
$draw->setTextAntialias(TRUE); 
$draw->annotation(20, 50, "\x{201C}Unicode \x{2018}\x{263A}\x{2019} Please\x{201D}"); 

$canvas = new Imagick(); 
$canvas->newImage(1000, 500, "red"); 
$canvas->drawImage($draw); 
$canvas->setImageFormat('png'); 

header("Content-Type: image/png"); 
echo $canvas; 

그러나 단지 \x{201C}Unicode \x{2018}\x{263A}\x{2019} Please\x{201D}을 인쇄합니다.

+0

대답이 아니라 해결 방법 : 왜 ImageMagick 대신 GD2 기능을 사용하지 않습니까? – timdream

+0

@timdream : GD는 ImageMagick보다 모든면에서 최악입니다. –

+0

@timdream : 시도했지만 일부 유니 코드 문자를 인쇄 할 수 없었습니다. – Gajus

답변

0

PHP는 ImageMagick이 그것을 통과 할 때 당신의 문자열로 유엔 이스케이프하여 유니 코드 문자를 삽입, 당신을 위해 탈출 할 것입니다 : 내가 명령 줄 도구를 사용하고에서 캡션/라벨을 받아

$draw->annotation(20, 50, "ééèeèeèaèèèààaàaàaààêêêçcçcçc"); 
+1

나는 지금까지 어떤 헥스를 긴 대시라고 여겨지는 '0x2212'와 같은 문자로 변환 할 수 없었다. – Gajus

0

UNICODE 문자를 지원하기 위해 file_put_contents()를 사용하여 작성된 중간 파일.

file_put_contents($textFilename, $text); 

$cmd = "convert -size ".WIDTH."x".HEIGHT." -background ".BACKGROUND_COLOR_TTI." -fill ".TEXT_COLOR_TTI." -pointsize ".FONT_SIZE_TTI." -gravity  center caption:@".$textFilename." ".$newFileName;