Странный эффект прозрачности при объединении двух .png с прозрачностью в PHP-GD - PullRequest
0 голосов
/ 27 июня 2011

Слияние двух изображений с прозрачными секциями дает следующее составное изображение:

enter image description here

Мне интересно, почему прозрачная часть изображения, которое я наложил на зеленый фон, так выглядит? Кто-нибудь? * * 1006

$base = imagecreatefrompng('application/assets/images/vel1_bg.png');
        imagealphablending($base, false);
        imagesavealpha($base, true);
        list($baseWidth, $baseHeight, $type, $attr) = getimagesize('application/assets/images/vel1_bg.png');

        $user_board_items = $this->config->item('user_board_items');

        foreach($array as $key => $value){
            $item = imagecreatefrompng('application/assets/images/items/' . $user_board_items[$value[0]] . '.png'); 
            imagealphablending($item, false);
            imagesavealpha($item, true);    
            list($width, $height, $type, $attr) = getimagesize('application/assets/images/items/'. $user_board_items[$value[0]] . '.png');

            imagecopyresampled($base,
                        $item,
                        floor(($value[1] / 100) * $baseWidth),
                        floor(($value[2] / 100) * $baseHeight),
                        0,
                        0,
                        $width,
                        $height,
                        $width,
                        $height);

            imagedestroy($item);
        }

        //We have to capture the output buffer
        ob_start();
        imagepng($base);
        $baseimg = ob_get_clean();

1 Ответ

1 голос
/ 27 июня 2011

GD не поддерживает прозрачность в 32-битном PNG.Вы должны использовать 8-битный с одним прозрачным «цветом» или 24-битный (официально 24-битный не поддерживает прозрачность, но Photoshop может сделать это при использовании «save for web» с 24-битным png).

...