bueno, la termine! jeje. yo te doy un par de ejemplos, que se adaptan a cada imagen, pero trata de jugar con los valores y podes obtener muchos resultados:
Inicial:

Resulatados:




Función:
Archivo que yo use para los ejemplos:
bueno, espero que este resultado sea el que necesites. la trasparencia creo que quedobien. un saludo grande
Inicial:

Resulatados:
Función:
Código (php) [Seleccionar]
function recortar($imagen, $centroX, $centroY, $ancho, $altura) {
$flotaImage = imagecreatetruecolor(imagesx($imagen), imagesy($imagen));
$naranja = imagecolorallocate($flotaImage, 255, 127, 0);
imagefilledellipse($flotaImage, $centroX, $centroY, $ancho, $altura, $naranja);
$finalImage = imagecreatetruecolor(imagesx($imagen), imagesy($imagen));
imagealphablending($finalImage,false);
$fondoFinal = imagecolorallocatealpha($finalImage, 0, 0, 0, 127);
imagefilledrectangle($finalImage , 0 , 0 ,imagesx($finalImage), imagesy($finalImage) , $fondoFinal);
imagealphablending($finalImage,true);
$xImage = imagesx($imagen);
$yImage = imagesy($imagen);
for($y=0;$y<$yImage;$y++) {
for($x=0;$x<$xImage;$x++) {
$rgb = imagecolorat($flotaImage, $x, $y);
if($rgb==$naranja) {
$rgb = imagecolorat($imagen, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$color = imagecolorallocate($flotaImage, $r, $g, $b);
imagesetpixel($finalImage, $x, $y, $color);
}
}
}
imagesavealpha($finalImage,true);
return $finalImage;
imagedestroy($flotaImage);
}
Archivo que yo use para los ejemplos:
Código (php) [Seleccionar]
/*Funcion anterior...*/
$imagen = imagecreatefromjpeg("http://weblog.evasee.com/wp-content/uploads/2008/05/evasee-bender-smoking-3310.jpg");
switch ($_GET['mode']){
case 1:
default:
$centroX = imagesx($imagen) / 2;
$centroY = imagesy($imagen) / 2;
$ancho = imagesx($imagen);
$altura = imagesy($imagen);
break;
case 2:
$centroX = 0;
$centroY = 0;
$ancho = imagesx($imagen);
$altura = imagesy($imagen);
break;
case 3:
$centroX = imagesx($imagen) / 2;
$centroY = imagesy($imagen) / 2;
$ancho = imagesx($imagen) * 2;
$altura = imagesy($imagen);
break;
case 4:
$centroX = imagesx($imagen) / 2;
$centroY = imagesy($imagen) / 2;
$ancho = (imagesx($imagen)<imagesy($imagen)) ? imagesx($imagen) : imagesy($imagen);
$altura = (imagesx($imagen)<imagesy($imagen)) ? imagesx($imagen) : imagesy($imagen);
break;
}
$imagen = recortar($imagen, $centroX, $centroY, $ancho, $altura);
header("Content-type: image/png");
imagepng($imagen);
imagedestroy($imagen);
bueno, espero que este resultado sea el que necesites. la trasparencia creo que quedobien. un saludo grande
