从使用imagepng()创建的PNG获取Alpha

时间:2017-04-18 13:10:16

标签: php png

我尝试获取 PNG alpha。我正在使用imagepng()执行此操作。 我的问题是alpha只返回0。

我使用alpha进行PNG的代码

$x = 1;
$y = 1;
$gd = imagecreatetruecolor($x, $y); 
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1));
imageAlphaBlending($gd, false);
imageSaveAlpha($gd, true);
imagepng($gd,"test.png");
imagedestroy($gd);

我的阅读PNG alpha代码

$im = imagecreatefrompng("test.png");
$rgb = imagecolorat($im, 0, 0);
$colors = imagecolorsforindex($im, $rgb);
$red = (int) $colors["red"]; 
$blue = (int) $colors["blue"];
$green = (int) $colors["green"]; 
$alpha = (int) $colors["alpha"]; // return only 0

我不知道为什么它只返回0而不是1。

2 个答案:

答案 0 :(得分:7)

在致电imageSaveAlpha之前,您应致电imageSaveAlphaimagesetpixel

imageAlphaBlending($gd, false);
imageSaveAlpha($gd, true);
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1));

答案 1 :(得分:1)

弗兰克,

以下是您的代码

的解决方案
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Test</title>

    </head>
    <body>

        <a href="index.php" class="navbar-brand">
            <?php
            $x = 1;
            $y = 1;
            $gd = imagecreatetruecolor($x, $y);
            imageAlphaBlending($gd, false);
            imageSaveAlpha($gd, true);
            imagesetpixel($gd, 0, 0, imagecolorallocatealpha($gd, 200, 200, 200, 1));
            imagepng($gd, 'img/logo.png" ');
            imagedestroy($gd);

            $im = imagecreatefrompng('img/logo.png');
            $rgb = imagecolorat($im, 0, 0);
            $colors = imagecolorsforindex($im, $rgb);
            $red = (int) $colors["red"];
            $blue = (int) $colors["blue"];
            $green = (int) $colors["green"];
            echo $alpha = (int) $colors["alpha"]; // return only 0
            ?>
        </a>

    </body>
</html>