2010-06-22 2 views
0

Я создаю прозрачный gif с текстом с библиотекой gd, но качество вывода текста не очень хорошо. Есть ли у кого-нибудь идея, как я могу улучшить качество?лучшее качество изображения для gif с библиотекой gd в PHP

Вот код:

$req = explode('|', $_REQUEST['r']); 
    $text = $req[0]; 
    header ("Content-type: image/gif"); 
    $font = getFont($req[2]); 
    $font_size = $req[1]; 
    $tmpcolor = getColor($req[3]);  
    [email protected]('gfx/transparent.gif'); 
    $width = imagesx($tmp_image); 
    $height = imagesy($tmp_image); 

    //calculate the new width/height 
    $tmp = imagettfbbox($font_size,0,$font,$text); 
    $new_width = $tmp[2]+10; 
    $new_height = $font_size+5; 

    $new_image = imagecreate($new_width,$new_height); 
    ImageCopyResized($new_image, $tmp_image,0,0,0,0, $new_width, $new_height, $width, $height); 
    $black = ImageColorAllocate($new_image, 0, 0,0); 
    $trans = ImageColortransparent($new_image,$black); 
    $color = ImageColorAllocate($new_image, trim($tmpcolor[0]), trim($tmpcolor[1]), trim($tmpcolor[2])); 
    imagettftext($new_image, $font_size, 0, 0, $font_size, $color, $font, $text); 
    //Grab new image 
    imagegif($new_image); 
    imagedestroy($new_image); 
    imagedestroy($tmp_image); 

Вот результат:

result
http://desmond.yfrog.com/Himg691/scaled.php?tn=0&server=691&filename=createphp.gif&xsize=640&ysize=640

Спасибо

ответ

0

Попробуйте использовать imagecreatetruecolor вместо ImageCreate.

+0

imagecreatetruecolor останавливает мой вывод, и он освобождает текст. :( – apple

+0

@apple он не должен этого делать. Поверните отчет об ошибках: 'error_reporting (E_ALL);', чтобы посмотреть, в чем проблема. –

1

Другие ответчики указывают, что это может быть простая проблема с прозрачностью, а не рендеринг TrueType. Сначала попробуйте эти предложения, поскольку они уже могут исправить эту проблему.

К сожалению, возможности визуализации шрифтов TrueType GD невелики.

  • Попробуйте семейство функций imageFTText(). Они полагаются на внешнюю библиотеку FreeType, которая лучше по качеству, а также учитывает информацию кернинга в шрифтах TrueType (индивидуальные расстояния между определенными парами символов, которые делают регулярный просмотр текста) лучше, чем функции TTF.

  • Если это не помогает, используйте Imagemagick, который по моему опыту намного превосходит все, что может предложить GD.

+0

Я думаю, что imageFTText ничего не меняет, и я бы не хотел использовать внешнюю библиотеку, например imagemagick Спасибо – apple

+0

@apple yup, проблема под рукой другая, см. мой комментарий в другом ответе. –

2

Формат GIF поддерживает только 1-битную прозрачность (поэтому пиксель является либо прозрачным, либо непрозрачным), поэтому ваш текст имеет зубчатые края. Для получения гладких краев используйте формат PNG (который имеет 8-битный альфа-канал, что означает 256 уровней прозрачности), используйте GIF без прозрачности (то есть на непрозрачном фоне).

+0

+1 Я перепробовал, что он создает * прозрачный * GIF. Это, очевидно, не может работать без зубчатых –

+0

Мне нужен прозрачный фон, потому что я бы установил текст поверх другого изображения. – apple

+0

но как я могу создать изображение с текстом и прозрачным фоном в хорошем качестве? – apple

 Смежные вопросы

  • Нет связанных вопросов^_^