PHP 5: nasıl utf-8 ikili veri yazmak için - resim - çıktı?

2 Cevap php

I have a Ubuntu server and PHP5, and the PHP script files, and all output are in UTF-8. I'm trying to send an image to the output stream, but just garbled chinese characters shows up in the output:

$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

herhangi bir öneriniz?

2 Cevap

Senin kod benim makinede mükemmel çalışıyor:

<?php
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

die;
?>

Eğer bu kodu önce veya sonra anything çıktılamak olmadığından emin misin? Boşluklarla bile her türlü sıkıntılara bir kaynak olacaktır.

Ya da belki script bir yere başka bir şey yapıyor?


If it still doesn't work, maybe trying with imagettftext, to use a "better" / more complete font than the ones used by imagestring might help ?

Örneğin, böyle bir şey kullanma:

$font = '/usr/share/fonts/truetype/msttcorefonts/arial.ttf';
imagettftext($im, 20, 0, 10, 20, $text_color, $font, 'A Simple éléphant String');


BTW, did you try without those line :

header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

Bu satırları kaldırılırken bir hata / uyarı / bilgi varsa, bu görmeye yardımcı olabilir.


And, as a sidenote : using JPEG for images that contain some text generally doesn't give great results, as JPEG is a destructive compression mechanism. Using PNG, in that kind of situation, might get you better results ;-)

Geçersiz render, JPEG görüntü içeriğine önüne alır, çünkü UTF-8 bayt sırası işareti kaldırmayı deneyin.