Прозрачный фон с GD в PHP - PullRequest
       14

Прозрачный фон с GD в PHP

4 голосов
/ 03 апреля 2012

Я пытаюсь создать диаграмму с помощью PHP и GD. График уже работает, но я невозможно сделать фон прозрачным (с сглаживанием).

Я хочу разместить сглаженную линию на градиентном фоне (это фон HTML), но он показывает несколько белых пикселей (см. Ссылку на изображение и мой код ниже). Возможно ли это сделать с помощью GD? Я много искал в Интернете, но не могу найти никаких решений.

Image showing aliasing problem

PHP

<?php
$img = imagecreatetruecolor(1000, 1000);

imagesavealpha($img, true);
imagealphablending($img, true);

$color = imagecolorallocatealpha($img, 255, 255, 255, 127); 
$red = imagecolorallocate($img, 255, 0, 0); 

imagefill($img, 0, 0, $color);

imageantialias($img, true);
imageline($img, 10, 10, 500, 20, $red);

header("content-type: image/png");
imagepng($img); 
imagedestroy($img); 
?>

HTML

<style type="text/css">
    body{
        background:url('/Image/background.png');
    }
</style>

<img src="./example.php" />

1 Ответ

1 голос
/ 03 апреля 2012

Руководство PHP в основном утверждает, что вы не можете:

Он не поддерживает альфа-компоненты. Он работает с использованием операции прямого смешивания.Он работает только с изображениями в истинном цвете.

Толщина и стили не поддерживаются.

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

http://es.php.net/imageantialias

Так что, если кто-то не придет со сторонним кодом или какими-то остроумными взломами,тебе не повезло.

...