Текст на прозрачном фоне GD2

Текст на прозрачном фоне GD2

Простая задача которую не получается решить быстро. Дело в том, что если воспользоваться функцией imagecolortransparent(), то эта функция оставляет вокруг букв контур из пикселей близкие по цвету к заднему фону.

Избавится от этого эффекта достаточно просто, далее я приведу рабочий пример.

В этом примере можно посмотреть:

$w = 500;
$h = 100;
$image = imagecreatetruecolor( $w, $h ) or die('Cannot create image');

//Цвета
$white = 0xffffff;
$black = 0x000000;
$red = 0xff0000; 

//Cам текст
$text = iconv( 'cp1251', 'utf-8', 'MyWebCenter' );

//Шрифт
$font = realpath('fonts/arial.ttf'); // - обязательно надо указать путь до шрифта
$fontsize = 30; // размер шрифта, gd1 - в пикселях, gd2 - в пунктах

///Централизация шрифта
$sz = imagettfbbox( $fontsize, 0 , $font , $text );
$x = ( imageSX($image) - ( $sz[2] - $sz[0] ) ) / 2 ;
$y = ( imageSY($image) + ( $sz[1] - $sz[7] ) ) / 2 ;

//Делаем изображение прозрачным
imagesavealpha($image,true);
imagefill($image, 1, 1, imagecolorallocatealpha( $image, 255, 255, 255, 127 ) );
imagecolortransparent($image, $black);

//Вставляем текст
imagettftext( $image, $fontsize, 0, $x, $y, $red, $font, $text );

//Выводим изображение
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *