php gd pixel

php gd pixelado demasiado fuerte



(2)

Esto es lo que necesitas (script que uso actualmente). Este script se basa en el script en http://www.talkphp.com/19670-post1.html :

function convertToPixel($im, $size) { $size = (int)$size; $sizeX = imagesx($im); $sizeY = imagesy($im); if($sizeX < 3 && $sizeX < 3) { // or you can choose any size you want return; } for($i = 0;$i < $sizeX; $i += $size) { for($j = 0;$j < $sizeY; $j += $size) { $colors = Array(''alpha'' => 0, ''red'' => 0, ''green'' => 0, ''blue'' => 0, ''total'' => 0); for($k = 0; $k < $size; ++$k) { for($l = 0; $l < $size; ++$l) { if($i + $k >= $sizeX || $j + $l >= $sizeY) { continue; } $color = imagecolorat($im, $i + $k, $j + $l); imagecolordeallocate($im, $color); $colors[''alpha''] += ($color >> 24) & 0xFF; $colors[''red''] += ($color >> 16) & 0xFF; $colors[''green''] += ($color >> 8) & 0xFF; $colors[''blue''] += $color & 0xFF; ++$colors[''total'']; } } $color = imagecolorallocatealpha($im, $colors[''red''] / $colors[''total''], $colors[''green''] / $colors[''total''], $colors[''blue''] / $colors[''total''], $colors[''alpha''] / $colors[''total'']); imagefilledrectangle($im, $i, $j, ($i + $size - 1), ($j + $size - 1), $color); } } } header(''Content-type: image/jpg''); $im = imagecreatefromjpeg($imgfile); convertToPixel($im, 15); imagejpeg($im, '''', 100);

Esto producirá:

También puede cambiar el valor pasado en convertToPixel para modificar el tamaño de píxel. )

Tengo este script para pixelizar mis imágenes. El script está funcionando, pero quiero bordes más suaves:

$imgfile = ''batman.jpg''; $image = ImageCreateFromJPEG($imgfile); $imagex = imagesx($image); $imagey = imagesy($image); $pixelate_amount = 10; $tmpImage = ImageCreateTrueColor($imagex, $imagey); imagecopyresized($tmpImage, $image, 0, 0, 0, 0, round($imagex / $pixelate_amount), round($imagey / $pixelate_amount), $imagex, $imagey); $pixelated = ImageCreateTrueColor($imagex, $imagey); imagecopyresized($pixelated, $tmpImage, 0, 0, 0, 0, $imagex, $imagey, round($imagex / $pixelate_amount), round($imagey / $pixelate_amount)); header("Content-Type: image/jpeg"); imageJPEG($pixelated, "", 100);

Yo tengo:

este producto:

¿hay algo que extraño?