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

Esempio di metodo per generare immagini sfocate in PHP

Questo esempio spiega come generare immagini sfocate in PHP. Condivido questo per farne una参考, come segue:

<?php
class image_blur{
/**
  *Sfocatura gaussiana di immagini (adatta per formati png/jpg/gif)
  * @param $srcImg Immagine originale
  * @param $savepath Percorso di salvataggio
  * @param $savename Nome di salvataggio
  * @param $positon Livello di sfocatura
  *
  *Espansione basata sul codice di Martijn Frazer, grazie 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 ? $savename : $name;
  $savepath = $savepath ? $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;
   default: return 'Salvataggio fallito'; // Salvataggio fallito
  }
  return $savefile;
  imagedestroy($srcImgObj);
 }
 /**
 * Sfocatura forte
 *
 * @param $gdImageResource risorsa immagine
 * @param $blurFactor   livello di sfocatura opzionale
 * Livello di sfocatura opzionale 0 utilizzato 3 predefinito oltre 5 molto sfocato
 * @return tipo di risorsa immagine GD
 * @author Martijn Frazer, idea basata su http://stackoverflow.com/a/20264482
 */
 private function blur($gdImageResource, $blurFactor = 3)
 {}}
  // blurFactor deve essere un intero
  $blurFactor = round($blurFactor);
  $originalWidth = imagesx($gdImageResource);
  $originalHeight = imagesy($gdImageResource);
  $smallestWidth = ceil($originalWidth * pow(0.5, $blurFactor));
  $smallestHeight = ceil($originalHeight * pow(0.5, $blurFactor));
  // per la prima esecuzione, l'immagine precedente è l'input originale
  $prevImage = $gdImageResource;
  $prevWidth = $originalWidth;
  $prevHeight = $originalHeight;
  // ridurre la scala gradualmente e poi aumentare di nuovo, sfumando tutto il percorso
  per($i = 0; $i < $blurFactor; $i += 1)
  {}}
   // determina le dimensioni dell'immagine successiva
   $nextWidth = $smallestWidth * pow(2, $i);
   $nextHeight = $smallestHeight * pow(2, $i);
   // ridimensiona l'immagine precedente alla dimensione successiva
   $nextImage = imagecreatetruecolor($nextWidth, $nextHeight);
   imagecopyresized($nextImage, $prevImage, 0, 0, 0, 0,
    $nextWidth, $nextHeight, $prevWidth, $prevHeight);
   // applicare filtro sfocatura
   imagefilter($nextImage, IMG_FILTER_GAUSSIAN_BLUR);
   // ora l'immagine nuova diventa l'immagine precedente per il passo successivo
   $prevImage = $nextImage;
   $prevWidth = $nextWidth;
   $prevHeight = $nextHeight;
  }
  // ridimensiona indietro alla dimensione originale e sfocatura una volta in più
  imagecopyresized($gdImageResource, $nextImage,
  0, 0, 0, 0, $originalWidth, $originalHeight, $nextWidth, $nextHeight);
  imagefilter($gdImageResource, IMG_FILTER_GAUSSIAN_BLUR);
  // pulizia
  imagedestroy($prevImage);
  // restituisce risultato
  restituisce $gdImageResource;
 }
 funzione privata 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);
?>

Esempio di effetto dell'immagine originale:

Esempio di effetto dopo la generazione dell'immagine sfocata:

Chi è interessato a ulteriori contenuti relativi a PHP può consultare la sezione speciale di questo sito: 'Riassunto delle tecniche di manipolazione delle immagini e delle immagini PHP', 'Riassunto delle operazioni sui file php', 'Manuale completo delle tecniche di manipolazione degli array (Array) PHP', 'Tutorial di base della sintassi PHP', 'Riassunto delle operazioni e degli operatori PHP', 'Tutorial di introduzione alla progettazione orientata agli oggetti PHP', 'Riassunto delle tecniche di programmazione di rete PHP', 'Riassunto delle tecniche di utilizzo delle stringhe (string) php', 'Tutorial di introduzione all'operazione del database mysql php', 'Riassunto delle tecniche di operazione dei database più comuni php'.

Spero che questo articolo possa essere utile per la progettazione di programmi PHP di tutti.

Dichiarazione: il contenuto di questo articolo è stato prelevato da Internet, il copyright è dell'autore originale, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene il diritto di proprietà, non è stato sottoposto a elaborazione editoriale umana e non assume responsabilità per le relative responsabilità legali. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare