2014-10-26 3 views
0

У меня вопрос. У меня уже есть этот код (я не лучший кодер, но, по крайней мере, он работает xD) для размытия и изменения размера. Это занимает слишком много времени, поэтому я хотел бы спросить, если есть способ сделать это быстрее:Изменение размера и размытие PHP

$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); 
+0

вы не имеете доступ к ImageMagick? –

+0

@JelleKeizer Мне нужно, чтобы оно было автоматическим, у меня действительно нет времени редактировать каждое изображение самостоятельно. –

+0

вы можете использоватьimagemagick от php для его автоматизации http://php.net/manual/en/imagick.examples-1.php, если его установлено –

ответ

0

IMG_FILTER_GAUSSIAN_BLUR фильтра довольно медленно. Вызов 50 раз не поможет. Вы можете попробовать комбинацию фильтров.

Попробуйте поставить

imagefilter($images_orig, IMG_FILTER_SMOOTH, -2); 

перед петлей и уменьшить количество петель ($blurs) к чему-то вроде 3.

+0

Дело в том, что изображение довольно огромное, и если я использую только несколько размытий, эффект не отображается после изменения размера изображения. Может быть, есть способ сначала изменить размер изображения, а затем размыть его? –

+0

Наблюдал за изменением размера. Конечно, имеет смысл сначала свернуть его вниз, а затем размыть. Однако вызов фильтра 'IMG_FILTER_GAUSSIAN_BLUR' более чем в 10 раз будет по-прежнему медленным. И у вас будет такой же эффект, как если бы вы сначала использовали фильтр IMG_FILTER_SMOOTH, а затем 'IMG_FILTER_GAUSSIAN_BLUR'. – tobltobs

Смежные вопросы