Ваш код отлично работает на моей машине:
<?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;
?>
Вы уверены, что не выводите что-нибудь до или после этого кода? Даже любые пробелы будут источником неприятностей.
Или, может быть, ваш сценарий где-то делает что-то еще?
Если это все еще не работает, возможно, может помочь попытка с помощью imagettftext
использовать «лучший» / более полный шрифт, чем тот, который используется imagestring
?
Используя что-то вроде этого, например:
$font = '/usr/share/fonts/truetype/msttcorefonts/arial.ttf';
imagettftext($im, 20, 0, 10, 20, $text_color, $font, 'A Simple éléphant String');
Кстати, вы пробовали без этой строки:
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
Если есть ошибка / предупреждение / уведомление, удаление этих строк может помочь вам увидеть их.
И, как примечание: использование JPEG для изображений, содержащих некоторый текст, обычно не дает хороших результатов, поскольку JPEG является разрушительным механизмом сжатия. Использование PNG в такой ситуации может дать вам лучшие результаты; -)