English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ejemplo de método para generar imágenes borrosas en PHP

Este ejemplo ilustra cómo generar imágenes borrosas en PHP. Compartimos esto con todos para su referencia, como se muestra a continuación:

<&63;php
class image_blur{
/**
  * Desenfoque gaussiano de imagen (aplicable a png/jpg/formato gif)
  * @param $srcImg Imagen original
  * @param $savepath Ruta de destino
  * @param $savename Nombre de archivo de destino
  * @param $positon Grado de desenfoque
  *
  *Basado en el código de Martijn Frazer, agradecimientos a Martijn Frazer
  */
 public function gaussian_blur($srcImg,$savepath=null,$savename=null,$blurFactor=3{
  $gdImageResource=$this->image_create_from_ext($srcImg);
  $srcImgObj=$this->blur($gdImageResource,$blurFactor);
  $temp = pathinfo($srcImg);
  $name = $temp['basename'];
  $path = $temp['dirname'];
  $exte = $temp['extension'];
  $savename = $savename &63; $savename : $name;
  $savepath = $savepath &63; $savepath : $path;
  $savefile = $savepath .'/'. $savename;
  $srcinfo = @getimagesize($srcImg);
  switch ($srcinfo[2}) {
   case 1: imagegif($srcImgObj, $savefile); break;
   case 2: imagejpeg($srcImgObj, $savefile); break;
   case 3: imagepng($srcImgObj, $savefile); break;
   por defecto: return 'Fallo de guardado'; //Fallo de guardado
  }
  return $savefile;
  imagedestroy($srcImgObj);
 }
 /**
 * Borrado Fuerte
 *
 * @param $gdImageResource Recurso de imagen
 * @param $blurFactor   Nivel de desenfoque seleccionable
 * Nivel de desenfoque seleccionable 0 usar 3por defecto, más de5muy borroso
 * @return Tipo de recurso de imagen GD
 * @author Martijn Frazer, idea basada en http://stackoverflow.com/a/20264482
 */
 función privada blur($gdImageResource, $blurFactor = 3)
 {}}
  // El factor de desenfoque debe ser un entero
  $blurFactor = round($blurFactor);
  $originalWidth = imagesx($gdImageResource);
  $originalHeight = imagesy($gdImageResource);
  $smallestWidth = ceil($originalWidth * pot(0.5, $blurFactor));
  $smallestHeight = ceil($originalHeight * pot(0.5, $blurFactor));
  // Para la primera ejecución, la imagen anterior es la entrada original
  $prevImage = $gdImageResource;
  $prevWidth = $originalWidth;
  $prevHeight = $originalHeight;
  // escalar mucho y luego escalar gradualmente de vuelta, desenfocando todo el camino
  for($i = 0; $i < $blurFactor; $i += 1)
  {}}
   // determinar las dimensiones de la siguiente imagen
   $nextWidth = $smallestWidth * pot(2, $i);
   $nextHeight = $smallestHeight * pot(2, $i);
   // redimensionar la imagen anterior al siguiente tamaño
   $nextImage = imagecreatetruecolor($nextWidth, $nextHeight);
   imagecopyresized($nextImage, $prevImage, 0, 0, 0, 0,
    $nextWidth, $nextHeight, $prevWidth, $prevHeight);
   // aplicar filtro de desenfoque
   imagefilter($nextImage, IMG_FILTER_GAUSSIAN_BLUR);
   // ahora la nueva imagen se convierte en la imagen anterior para el siguiente paso
   $prevImage = $nextImage;
   $prevWidth = $nextWidth;
   $prevHeight = $nextHeight;
  }
  // escalar de vuelta al tamaño original y desenfocar una vez más
  imagecopyresized($gdImageResource, $nextImage,
  0, 0, 0, 0, $originalWidth, $originalHeight, $nextWidth, $nextHeight);
  imagefilter($gdImageResource, IMG_FILTER_GAUSSIAN_BLUR);
  // limpiar
  imagedestroy($prevImage);
  // devuelve result
  devuelve $gdImageResource;
 }
 función privada image_create_from_ext($imgfile)
 {}}
  $info = getimagesize($imgfile);
  $im = null;
  switch ($info[2}) {
  case 1: $im=imagecreatefromgif($imgfile); break;
  case 2: $im=imagecreatefromjpeg($imgfile); break;
  case 3: $im=imagecreatefrompng($imgfile); break;
  }
  return $im;
 }
}
$image_blur = new image_blur();
$image_blur->gaussian_blur("./1.jpg",null,null,3);
?>

Efecto del archivo original:

Efecto después de generar la imagen borrosa:

Más información sobre contenido relacionado con PHP puede ser encontrada en la sección especial de este sitio: 'Resumen de técnicas de manipulación de gráficos e imágenes de PHP', 'Resumen de técnicas de operación de archivos php', '大全 de técnicas de operación de arrays (Array) de PHP', 'Tutorial de gramática básica de PHP', 'Resumen de técnicas y uso de operadores de PHP', 'Tutorial de diseño de programas orientados a objetos php', 'Resumen de técnicas de programación de red de PHP', 'Resumen de técnicas de uso de cadenas (string) de php', 'php'+Tutorial de operación básica de bases de datos mysql y Resumen de técnicas comunes de operación de bases de datos php

Espero que lo descrito en este artículo pueda ayudar a todos en el diseño de programas PHP.

Declaración: El contenido de este artículo se obtiene de la red, el derecho de autor pertenece al propietario original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee derechos de propiedad, no se ha realizado un procesamiento editorial humano y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará