Граница алфавита в прозрачном фоновом изображении нежелательна?

#php #gd #php-gd

#php #gd #php-gd

Вопрос:

Я использую этот код для создания изображений с текстом, написанным на нем, с прозрачным фоном.

  <?php
 // Set the content-type
 header('Content-Type: image/gif');

 // Create the image
 $im = imagecreatetruecolor(400, 150);

 // Create some colors

 $black = imagecolorallocate($im, 0, 0, 0);
 $acolor = imagecolorallocate($im, 153, 204, 153);
 imagecolortransparent($im, $black);

 // The text to draw
 $text = 'Testing...';
 // Replace path by your own font path
 $font = 'arial.ttf';

 // Add the text
 imagettftext($im, 50, 0, 10, 100, $acolor, $font, $text);

 // Using imagegif()
 imagegif($im,"img.gif");
 imagedestroy($im);
 ?>
  

Но текст, который написан в img.gif имеет некоторый нежелательный цвет (черный) на границах алфавитов (‘e, s, n, g’). Как я могу закончить этот цвет.Сгенерированное изображение

Сайт загрузки шрифтов arial http://code.google.com/p/ireader/downloads/detail?name=arial.ttf

Комментарии:

1. Не совсем понятно, что вы имеете в виду: не могли бы вы предоставить образец графики для демонстрации проблемы? Кроме того, я не уверен, что вы пытаетесь здесь сделать, но если вы используете эту графику для отображения текста на своем сайте, возможно, удастся добиться этого лучше с помощью HTML / CSS без использования графики вообще. Но это зависит от того, что вы пытаетесь сделать.

2. @Spudley этот код выводит это изображение с надписью «тестирование» в нем imageshack.us/photo/my-images/851/imgsi.png в алфавитах «e», «s», «n» и «g» на границах есть маленькие черные точки, поэтому я не хочу, чтобы эти границы

3. повторите мой второй момент: если все, что вы делаете, это создаете графику, чтобы у вас был текст необычными шрифтами, вы можете сделать это в обычном HTML / CSS, даже со специальным шрифтом, используя CSS @font-face . Работает во всех браузерах. См randsco.com/index.php/2009/07/04/p680 и paulirish.com/2009/bulletproof-font-face-implementation-syntax для получения дополнительной информации.

4. @Spudley спасибо за ссылки, но мне, возможно, придется использовать изображение в проекте, но пока не уверен. Спасибо

Ответ №1:

Формат GIF не может обрабатывать альфа-прозрачность. Он может иметь только 100% прозрачных (= невидимых) или 100% непрозрачных (= видимых) пикселей.

Кажется, что ваш текст имеет сглаженные, мягкие края.

Эти края не на 100% прозрачны, но они также не на 100% непрозрачны — они представляют собой смесь переднего плана и фона. Это делает их более мягкими.

Поскольку формат GIF не может справиться с этими нюансами, библиотека использует смесь зеленого и черного для имитации «более слабого» зеленого.

Если вы используете формат PNG, проблема должна исчезнуть: PNG поддерживает альфа-прозрачность. Есть некоторые проблемы, которые вам нужно изучить, если вам все еще нужна поддержка IE6, но для любого другого браузера это будет работать нормально сразу.

Комментарии:

1. вы правы, я решил это с помощью png два дня назад, спасибо, спасибо.