Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

case 3: // PNG
$src_image = imagecreatefromjpeg($image_from);
break; разве не imagecreatefrompng должно быть?// деление на ноль - плохая идея
if ( ($src_width == 0) or ($src_height == 0) ) {
return FALSE;
} в правилах хорошего тона выполнять проверку входных данных до совершения с ними операций, я бы советовал перенести этот кусок ближе к началу функции.Copy Source | Copy HTML
- function render($fromImg, $toImg, $width = 200, $height = 200, $typeBlur = "blur", $blur = 20, $spread = 0, $border = 20)
- {
- $Image = new Imagick($fromImg);
- $BackGround = $Image->getImage();
- /*уменьшаем картинку на заданную ширину и высоту*/
- $BackGround->scaleImage($width, $height);
-
- /*выбор типа фильтра для размытия*/
- switch ($typeBlur) {
- case "gaussian":
- $BackGround->gaussianBlurImage(5, $blur);
- break;
- case "motion":
- $BackGround->motionBlurImage($blur, 10, 1);
- break;
- case "negate":
- $BackGround->negateImage(false);
- $BackGround->blurImage(5, $blur);
- break;
- default:
- $BackGround->blurImage(5, $blur);
- break;
- }
-
- $widthImage = $Image->getImageWidth();
- $heightImage = $Image->getImageHeight();
-
- if ($widthImage > $heightImage) {
- $Image->scaleImage($width - $border, 0);
- $top = ($height - $Image->getImageHeight()) / 2;
- $left = $border / 2;
- } else {
- $Image->scaleImage( 0, $height - $border);
- $top = $border / 2;
- $left = ($width - $Image->getImageWidth()) / 2;
- }
-
- /*эффект водянной поверхности(если значение больше 0)*/
- if ($spread > 0) $BackGround->spreadImage($spread);
-
- /*объединяем фон и картинку*/
- $BackGround->compositeImage($Image, Imagick::COMPOSITE_OVER, $left, $top);
- /*сохраняем картинку*/
- file_put_contents($toImg, $BackGround->getImageBlob());
- }
-
- render("image.jpg", "image-mini.jpg");
Реализация эффекта Philips Ambilight в превью изображений