所以,我有一个脚本来调整大小,保存一个gif并在我的服务器上保存这个gif的预览图像。上传脚本太长,无法执行
这是我的脚本:
public function createImageGif($gif, $x, $y, $w, $h)
{
$image = new Imagick();
$decoded = base64_decode($gif);
$image->readimageblob($decoded);
$image = $image->coalesceImages();
$image_name = uniqid(rand()).'.gif';
foreach ($image as $frame) { //gif creation
$frame->cropImage($w, $h, $x, $y);
$frame->thumbnailImage(117, 135);
$frame->setImagePage(117, 135, 0, 0);
}
$image = $image->deconstructImages();
$image->writeImages('uploads/profiles/'.$image_name, true);
//preview creation
$im = imagecreatefromstring($decoded);
if ($im !== false) {
header('Content-Type: image/gif');
$newimage = imagecreatetruecolor(117, 135);
imagecopyresampled($newimage, $im, 0, 0, $x, $y, 117, 135, $w, $h);
imagegif($newimage, 'uploads/profiles-preview/'.$image_name.'', 100);
imagedestroy($newimage);
imagedestroy($im);
}
return $image_name;
}
所以,$gif
是在第一长字符串BLOB(约2 000 000个字符)。最后,我的服务器上的gif大小约为300ko。
该脚本需要20多秒才能执行。我有一个良好的连接和一个很好的服务器。
如何优化此脚本?有任何想法吗 ?
编辑:这是我的脚本在JavaScript创建我的数据:
您好Clément。你可以放入一些断点并接近代码的“挂起”部分。这可能会使您更容易帮助您改进代码。如果你无法做出断点,你可以做一些回声1;出口;并且将代码“挂起”的地方修饰一番。 –
哼,我的问题不在我的PHP脚本中,而是在我的ajax请求中。我试图发送一个非常大的字符串与jquery ajax(在我的编辑img.src)。所以,问题是ajax –