У меня вопрос. У меня уже есть этот код (я не лучший кодер, но, по крайней мере, он работает xD) для размытия и изменения размера изображения. Это занимает слишком много времени, поэтому я хотел спросить, есть ли способ сделать это быстрее:
$file = $data['image'];
$blurs = 50;
$extension = pathinfo($file, PATHINFO_EXTENSION);
if ($extension == 'jpg' || $extension == 'jpeg')
{
$width=300;
$size=GetimageSize($file);
$height=round($width*$size[1]/$size[0]);
$images_orig = ImageCreateFromJPEG($file);
for ($i = 0; $i < $blurs; $i++) {
imagefilter($images_orig, IMG_FILTER_GAUSSIAN_BLUR);
}
$photoX = ImagesX($images_orig);
$photoY = ImagesY($images_orig);
$images_fin = ImageCreateTrueColor($width, $height);
ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
imagejpeg($images_fin, null, 100);
}
else if ($extension == 'png')
{
}
else
{
return 'error';
}
imagedestroy($images_fin);
IMG_FILTER_GAUSSIAN_BLUR
Фильтр довольно медленный. Называть это 50 раз не поможет. Вы можете попробовать некоторую комбинацию фильтров.
Попробуй поставить
imagefilter($images_orig, IMG_FILTER_SMOOTH, -2);
перед петлей и уменьшить количество петель ($blurs
) что-то вроде 3.
Других решений пока нет …