Композиция PNG с использованием GD и PHP - PullRequest
0 голосов
/ 15 июня 2010

Я пытаюсь взять прямоугольный png и добавить глубину, используя GD, дублируя фон и перемещая его вниз на 1 пиксель и вправо на 1 пиксель.Я также пытаюсь сохранить прозрачный фон.

У меня много проблем с сохранением прозрачности.

Любая помощь будет принята с благодарностью.

Спасибо!

    $obj = imagecreatefrompng('rectangle.png');
    $depth = 5;
    $obj_width = imagesx($obj);  
    $obj_height = imagesy($obj); 
    imagesavealpha($obj, true); 
        for($i=1;$i<=$depth;$i++){
            $layer = imagecreatefrompng('rectangle.png');
            imagealphablending( $layer, false );
            imagesavealpha($layer, true);

            $new_obj = imagecreatetruecolor($obj_width+$i,$obj_height+$i);
            $new_obj_width = imagesx($new_obj);  
            $new_obj_height = imagesy($new_obj); 
            imagealphablending( $new_obj, false );
            imagesavealpha($new_obj, true);

            $trans_color = imagecolorallocatealpha($new_obj, 0, 0, 0, 127);
            imagefill($new_obj, 0, 0, $trans_color);

            imagecopyresampled($new_obj, $layer, $i, $i, 0, 0, $obj_width, $obj_height, $obj_width, $obj_height);
            //imagesavealpha($new_obj, true); 
            //imagesavealpha($obj, true); 
        }
    header ("Content-type: image/png");
    imagepng($new_obj);
    imagedestroy($new_obj);

1 Ответ

0 голосов
/ 17 апреля 2014

Решение практически любой связанной с PHP GD проблемы заключается в использовании этой небольшой утилиты:

http://phpimageworkshop.com/

Это класс PHP, основанный на GD.... но у него есть два "незначительных" различия:

Чрезвычайно легко

Всегда выполняйте работу

Двадней назад у меня была похожая проблема ( Объединение нескольких изображений PNG в один PNG с использованием PHP ), но эта библиотека спасает день!

...