Marcofbb Noticias y Artículos Webmasters



Publicidad marcored

Pixelar imagenes con PHP

  • 27/05/2015
  • 10:53 pm
  • marcofbb

El siguiente script lo que hace es pixelar una imagen con PHP. Utiliza la librería GD de PHP para pixelar la imagen.

Monalisa Pixelada con PHPMonalisa Pixelada con PHP

<?php 
// Tamaño del pixel 
	$pixel = 15;
/* Pixelar una imagen */
		$getImagen = 'mona-lisa.jpg';
		//Creamos una variable imagen a partir de la imagen original
#		$imagen = imagecreatefrompng($getImagen); // Descomentar si es PNG
		$imagen = imagecreatefromjpeg($getImagen); 
		if(!$imagen) exit('ERROR');
		list($ancho,$alto)=getimagesize($getImagen);
		$superficieTotal = $ancho*$alto;	
		//
		$superficieRecorrida = 0;
		$auxX=0;
		$auxY=0;
		while($superficieRecorrida <= $superficieTotal){
			$posX=0;$posY=0;$data = array();
			while($posX <= $pixel and (($auxX + $posX) < $ancho)){
				$posY=0;
				while($posY <= $pixel and (($auxY + $posY) < $alto)){
					$rgb = imagecolorat($imagen, ($auxX + $posX), ($auxY + $posY));
					$r = ($rgb >> 16) & 0xFF;
					$g = ($rgb >> 8) & 0xFF;
					$b = $rgb & 0xFF;
					$data[] = array($r,$g,$b);
					$posY++;
				}
				$posX++;
			}
 
			// Busco promedio
			$r = 0; $g = 0; $b = 0;
			foreach($data as $d){
				$r+= $d[0];
				$g+= $d[1];
				$b+= $d[2];
			}
			$totalArray = count($data);
			if($totalArray == 0) $totalArray = 1;
			$r = $r/$totalArray;
			$g = $g/$totalArray;
			$b = $b/$totalArray;
			$colorPromedio = imagecolorallocate($imagen, $r, $g, $b);
			imagefilledrectangle($imagen, $auxX, $auxY, ($auxX + $pixel), ($auxY + $pixel), $colorPromedio);
			//
			$auxX+= $pixel;
			if($auxX >= $ancho){
				$auxX = 0;
				$auxY+= ($pixel+1);
			}		
			$superficieRecorrida+= $pixel*$pixel;
 
		}
		//
		Header("Content-type: image/jpeg");
		imagejpeg($imagen);
		imagedestroy($imagen);
	// Fin Pixelar una imagen
?>

Share

¿Necesitas ayuda? o ¿Asesoramiento webmaster? Registrate en nuestro foro de consultas

Posts Relacionados

Enviar Comentario

(*)

(*)