Наложение изображений в PHP; Черный фон?

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

<?php

    $images = array( $_GET['color'], $_GET['face'], $_GET['hat'] );


    $img = imagecreatetruecolor(58, 75);

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

    imagecolorallocate($img, 255, 205, 255);
    imagecolorallocate($img, 255, 255, 255);
    imagecolortransparent($img, $white);

imagefilledrectangle($img, 0, 0, $imgWidth, $imgHeight, $white);
    foreach($images as $fn) {

        $cur = imagecreatefrompng($fn);
        imagealphablending($cur, true);
        imagesavealpha($cur, true);


        imagecopy($img, $cur, 0, 0, 0, 0, 58, 75);


        imagedestroy($cur);
    }   


    header('Content-Type: image/png');
    imagepng($img);

?>

person Seth    schedule 12.12.2010    source источник


Ответы (2)


// Create an image

$img = imagecreatetruecolor($imgWidth, $imgHeight);

$white = imagecolorallocate($img, 255, 255, 255);

// Make the background white

imagefilledrectangle($img, 0, 0, $imgWidth, $imgHeight, $white);

... может помочь.

person Ilyssis    schedule 12.12.2010
comment
Я отредактировал сценарий поста на свой самый новый сценарий. Все равно показывает черный. - person Seth; 12.12.2010

Это распространенная проблема, и ответ уже доступен в переполнении стека; ответ там отлично решает проблему. Вы можете попытаться найти более тщательно :)

Я бы посоветовал вам облегчить себе жизнь, используя гораздо более мощный (но, к сожалению, плохо документированный) imagick библиотека, если вы собираетесь делать что-то большее, чем самые простые манипуляции с изображениями; это быстрее, проще (опять же, после того, как вы ознакомитесь с документацией) и мощнее.

person El Yobo    schedule 12.12.2010
comment
Я искал 3 дня, и ничего не получалось. - person Seth; 12.12.2010
comment
@Seth: Как отмечалось в обсуждении, связанном с Эль Йобо, вы должны выделить фиктивный цвет перед выделением белого, поскольку вы не можете использовать первый выделенный цвет в качестве прозрачности. Кроме того, вы используете $white в своем коде перед его определением. - person nico; 12.12.2010