Ответ 1
Вы должны позвонить imageAlphaBlending
и imageSaveAlpha
перед вызовом imagesetpixel
:
imageAlphaBlending($gd, false);
imageSaveAlpha($gd, true);
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1));
Я пытаюсь получить alpha
PNG. Я делаю это с помощью imagepng()
.
Моя проблема alpha
возвращает только 0.
Мой код для создания 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.
Вы должны позвонить imageAlphaBlending
и imageSaveAlpha
перед вызовом imagesetpixel
:
imageAlphaBlending($gd, false);
imageSaveAlpha($gd, true);
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,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>