我正在使用 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);