0

我正在使用 PHP 函数 imagecopyresample 和 imagecopy 来旋转和合并两个图像。两张图片的大小约为 2480 像素 x 3508 像素,大小在 3MB 到 10MB 之间。目前合并两者大约需要 30 秒,下面是我的代码。

我只是想知道是否有更好的方法来做到这一点?我不需要屏幕上显示的图像,实际上可以在用户仍在浏览网站时在后台完成。

提前致谢

 $photoFrame    = imagecreatetruecolor(3508,2480);

        $trans_colour   = imagecolorallocate($photoFrame, 255, 255, 255);
        imagefill($photoFrame, 0, 0, $trans_colour);

        for($i = 0; $i < $count_images; ++$i){
            $insert         = $res['images'][$i]['src'];
            $extension      = substr(strrchr($insert,'.'),1);
            $photoFrame2Rotation = (180-$res['images'][$i]['rotation']) + 180;

            $photo2         = imagecreatefrompng($insert);}
            $foto2W         = imagesx($photo2);
            $foto2H         = imagesy($photo2);
            $photoFrame2W   = $res['images'][$i]['width'];
            $photoFrame2H   = $res['images'][$i]['height'];

            $photoFrame2TOP = $res['images'][$i]['top'];
            $photoFrame2LEFT= $res['images'][$i]['left'];

            $photoFrame2    = imagecreatetruecolor($photoFrame2W,$photoFrame2H);
            $trans_colour   = imagecolorallocatealpha($photoFrame2, 0, 0, 0, 127);
            imagefill($photoFrame2, 0, 0, $trans_colour);

            imagecopyresampled($photoFrame2, $photo2, 0, 0, 0, 0, $photoFrame2W, $photoFrame2H, $foto2W, $foto2H);

            imagesavealpha($photoFrame2, true);

            $blue = imagecolorallocate($photoFrame2, 0, 0,255);
            imagecolortransparent($photoFrame2, $blue);

            imagecopy($photoFrame, $photoFrame2,$photoFrame2LEFT, $photoFrame2TOP, 0, 0, imagesx($photoFrame2), imagesy($photoFrame2));
        }

    $cachefile = "userdir/".$value.".png"; 

    imagepng($photoFrame, $cachefile, 1);
    imagedestroy($photoFrame);
4

0 回答 0