Черный фон при использовании imagecopy PHP

Нужно объединить изображения из массива в 2 колонки а дальше вниз сколько их там будет.

вроде все сделал, но блин при склеивании получается черный фон. Методом тыка установил что фон добавляет imagecopy.

Как можно это победить?

                    //определяем максимальные размеры ширины и высоты для составного фото
                $imgWidthMax = 0;
                $imgHeightMax = 0;
                foreach ($imageArr as $imgSize) {
                    $src = imagecreatefrompng($imgSize);
                    $cropped2 = imagecropauto($src, IMG_CROP_WHITE);
                    if ($cropped2 !== false) {
                        imagedestroy($src);
                        $src = $cropped2;
                    }
                    imagepng($src, $dir . 'test.png');
                    $size = getimagesize($dir . 'test.png');
                    if ($size[0] > $imgWidthMax) {
                        $imgWidthMax = $size[0];
                    }
                    if ($size[1] > $imgHeightMax) {
                        $imgHeightMax = $size[1];
                    }
                }
                //нужная ширина и длина изображения
                $imgWidth = $imgWidthMax;
                $imgHeight = $imgHeightMax;
                //колонки и ряды в скринлисте (кол-во images должно быть >= $rows*$cols)
                $rows = 2;
                $cols = ceil(count($imageArr) / 2);
                //итоговая ширина-длина скринлиста
                $bgWidth = $imgWidth * $cols;
                $bgHeight = $imgHeight * $rows;
                //создаём пустой скринлист нужного размера
                $im = imagecreatetruecolor($bgWidth, $bgHeight);
                //делаем подложку белой
                $white = imagecolorallocate($im, 255, 255, 255);
                imagefill($im, 0, 0, $white);
                $f = 0; //первое изображение в images
                //последовательно обрабатываем каждый ряд скринлиста, вставляя в нужном месте изображение
                for ($j = 0; $j < $cols; $j++) {
                    for ($i = 0; $i < $rows; $i++) {
                        $src = imagecreatefrompng($imageArr[$f]);
                        //Обрезаем у каждого изображения белые края
                        $cropped2 = imagecropauto($src, IMG_CROP_WHITE);
                        if ($cropped2 !== false) { // в случае возврата нового объекта изображения
                            imagedestroy($src);    // мы уничтожаем исходное изображение
                            $src = $cropped2;       // и назначаем обрезанное изображение в $im
                        }
                        imagecopy($im, $src, $j * $imgWidth, $i * $imgHeight, 0, 0, $imgWidth, $imgHeight);
                        $f++; //следующее изображение в images
                    }
                }
                imagepng($im, $dir . $numModel . '.png');
                imagedestroy($im);
                imagedestroy($src);

Ответы (0 шт):