Как создать изображение с прозрачным фоном

Как создать изображение с помощью GDlib с прозрачным фоном?

header('content-type: image/png'); $image = imagecreatetruecolor(900, 350); imagealphablending($image, true); imagesavealpha($image, true); $text_color = imagecolorallocate($image, 0, 51, 102); imagestring($image,2,4,4,'Test',$text_color); imagepng($image); imagedestroy($image); 

Здесь фон черный

Вы должны использовать imagefill() и заполнить это выделенным цветом ( imagecolorallocatealpha() ), у которого альфа установлена ​​в 0.

Как сказал @mvds, «выделение не обязательно», если это изображение в стиле truecolor (24 или 32 бит), оно просто целое, поэтому вы можете передать это целое число непосредственно в imagefill() .

Что делает PHP в фоновом режиме для изображений truecolor при вызове imagecolorallocate() – это одно и то же – он просто возвращает это вычисленное целое число.

Добавить строку

 imagefill($image,0,0,0x7fff0000); 

где-то перед imagestring и она будет прозрачной.

0x7fff0000 разбивается на:

 alpha = 0x7f red = 0xff green = 0x00 blue = 0x00 

который является полностью прозрачным.

Что-то вроде этого…

 $im = @imagecreatetruecolor(100, 25); # important part one imagesavealpha($im, true); imagealphablending($im, false); # important part two $white = imagecolorallocatealpha($im, 255, 255, 255, 127); imagefill($im, 0, 0, $white); # do whatever you want with transparent image $lime = imagecolorallocate($im, 204, 255, 51); imagettftext($im, $font, 0, 0, $font - 3, $lime, "captcha.ttf", $string); header("Content-type: image/png"); imagepng($im); imagedestroy($im); 

Это должно работать:

 $img = imagecreatetruecolor(900, 350); $color = imagecolorallocatealpha($img, 0, 0, 0, 127); //fill transparent back imagefill($img, 0, 0, $color); imagesavealpha($img, true); 

Это должно сработать. Это сработало для меня.

 $thumb = imagecreatetruecolor($newwidth,$newheight); $transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); imagefill($thumb, 0, 0, $transparent); imagesavealpha($thumb, true); imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagepng($thumb, $output_dir); 

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

 PNG-8 (recommended) Colors: 256 or less Transparency: On/Off GIF Colors: 256 or less Transparency: On/Off JPEG Colors: True color Transparency: n/a 

Функция imagecopymerge неправильно обрабатывает изображения PNG-24; поэтому не рекомендуется.

Если вы используете Adobe Photoshop для создания водяных знаков, рекомендуется использовать команду «Сохранить для Интернета» со следующими настройками:

 File Format: PNG-8, non-interlaced Color Reduction: Selective, 256 colors Dithering: Diffusion, 88% Transparency: On, Matte: None Transparency Dither: Diffusion Transparency Dither, 100%