Ver Mensaje Individual
  #9 (permalink)  
Antiguo 17/06/2015, 19:47
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pixelar imagen con PHP y reducir tamaño

Hola,
Antes que nada quiero decir, que mi idea no es revivir un post viejo sin motivos, el motivo es que este post esta muy posicionado en Google y es una lastima que en el post no este la solución al problema.


Dejo el código PHP para pixelear imagenes con Libreria GD


Código PHP:
Ver original
  1. <?php
  2. // Tamaño del pixel
  3.     $pixel = 15;
  4. /* Pixelar una imagen */
  5.         $getImagen = 'mona-lisa.jpg';
  6.         //Creamos una variable imagen a partir de la imagen original
  7. #       $imagen = imagecreatefrompng($getImagen); // Descomentar si es PNG
  8.         $imagen = imagecreatefromjpeg($getImagen);
  9.         if(!$imagen) exit('ERROR');
  10.         list($ancho,$alto)=getimagesize($getImagen);
  11.         $superficieTotal = $ancho*$alto;   
  12.         //
  13.         $superficieRecorrida = 0;
  14.         $auxX=0;
  15.         $auxY=0;
  16.         while($superficieRecorrida <= $superficieTotal){
  17.             $posX=0;$posY=0;$data = array();
  18.             while($posX <= $pixel and (($auxX + $posX) < $ancho)){
  19.                 $posY=0;
  20.                 while($posY <= $pixel and (($auxY + $posY) < $alto)){
  21.                     $rgb = imagecolorat($imagen, ($auxX + $posX), ($auxY + $posY));
  22.                     $r = ($rgb >> 16) & 0xFF;
  23.                     $g = ($rgb >> 8) & 0xFF;
  24.                     $b = $rgb & 0xFF;
  25.                     $data[] = array($r,$g,$b);
  26.                     $posY++;
  27.                 }
  28.                 $posX++;
  29.             }
  30.  
  31.             // Busco promedio
  32.             $r = 0; $g = 0; $b = 0;
  33.             foreach($data as $d){
  34.                 $r+= $d[0];
  35.                 $g+= $d[1];
  36.                 $b+= $d[2];
  37.             }
  38.             $totalArray = count($data);
  39.             if($totalArray == 0) $totalArray = 1;
  40.             $r = $r/$totalArray;
  41.             $g = $g/$totalArray;
  42.             $b = $b/$totalArray;
  43.             $colorPromedio = imagecolorallocate($imagen, $r, $g, $b);
  44.             imagefilledrectangle($imagen, $auxX, $auxY, ($auxX + $pixel), ($auxY + $pixel), $colorPromedio);
  45.             //
  46.             $auxX+= $pixel;
  47.             if($auxX >= $ancho){
  48.                 $auxX = 0;
  49.                 $auxY+= ($pixel+1);
  50.             }      
  51.             $superficieRecorrida+= $pixel*$pixel;
  52.  
  53.         }
  54.         //
  55.         Header("Content-type: image/jpeg");
  56.         imagejpeg($imagen);
  57.         imagedestroy($imagen);
  58.     // Fin Pixelear una imagen
  59. ?>

Fuente y explicación: http://www.marcofbb.com.ar/pixelear-imagenes-con-php/