Преобразование изображений в альфа-прозрачность с PHP - PullRequest
2 голосов
/ 20 июля 2011
$im = imagecreatefrompng('./test.png');
$white = imagecolorallocate($im, 255, 255, 255);
imagecolortransparent($im, $white);

Этот код подходит для удаления чистого белого изображения, но я хочу преобразовать все цвета в альфа-проценты.Например, средний серый будет на 50% прозрачным черным.Таким образом, изображение, которое было средне-серым, показывало бы изображение позади него, если бы помещалось сверху.

Возможно ли это с помощью PHP или расширения?

1 Ответ

0 голосов
/ 20 июля 2011

Я только что написал и протестировал этот скрипт для вас.

$imfile = './test.png';
$origim = imagecreatefrompng($imfile);
$im_size = getimagesize($imfile);

$im = imagecreatetruecolor($im_size[0], $im_size[1]);
imagealphablending($im, false);
imagesavealpha($im, true);

for ($x = 0; $x < $im_size[0]; ++$x){
    for ($y = 0; $y < $im_size[1]; ++$y){
        $rgb = imagecolorat($origim,- $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
        $color = imagecolorallocatealpha($im, 0, 0, 0, intval(($r+$g+$b)/3/255*127)); 
        imagesetpixel($im, $x, $y, $color);
    }
}

Это может быть немного медленно на больших изображениях, но работает так, как вы этого хотите. =)

Надеюсь, что этот ответ приемлем. Удачи.

...