Image Overlay в 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

Това е често срещан проблем и отговорът вече е наличен на stack overflow; отговорът там решава проблема перфектно. Може да опитате да търсите по-усилено :)

Предлагам ви да улесните живота си, като използвате значително по-мощния (но за съжаление слабо документиран) imagick библиотека, ако ще се опитате да направите нещо повече от най-елементарната манипулация на изображения; той е по-бърз, по-лесен (отново, след като преминете през документацията) и по-мощен.

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