Foros del Web » Programando para Internet » PHP »

Recortar imagen desde el centro

Estas en el tema de Recortar imagen desde el centro en el foro de PHP en Foros del Web. Hola, que tal, veréis quiero hacer un resize de imagenes, y que el ancho sea igual que el alto, es decir i px * i ...
  #1 (permalink)  
Antiguo 13/01/2012, 06:08
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Recortar imagen desde el centro

Hola, que tal, veréis quiero hacer un resize de imagenes, y que el ancho sea igual que el alto, es decir i px * i px.

El problema es que hay veces que el ancho de la imagen original tiene más pixels que el alto de la imagen, y viceversa.

He conseguido hacerlo, de modo que poniendole un ancho máximo y alto máximo, me haga un resize proporcional, pero veo que tampoco es lo que busco, ya que me descuadra bastantes sitios de la web.

He visto que tanto facebook como twitter, para hacer sus iconos con las fotos que ponemos de perfil, lo que hace es utilizar imagenes de mismo tamaño tanto de largo como de alto, pero lo que hace es recortarlo, desde el punto centro de la imagen, ejemplo:


Imagen original:
https://twimg0-a.akamaihd.net/profil...leria33087.jpg

imagen de 128x128
https://twimg0-a.akamaihd.net/profil...ably_small.jpg

como veis, twitter la recorta desde el medio, sin perder proporciones, como podría hacerlo así?

Muchas gracias
__________________
aste nagusia
  #2 (permalink)  
Antiguo 13/01/2012, 08:34
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: Recortar imagen desde el centro

Puedes consultar el manual, imagecopyresized, http://php.net/manual/es/function.imagecopyresized.php
Saludos
  #3 (permalink)  
Antiguo 13/01/2012, 12:52
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Respuesta: Recortar imagen desde el centro

Cita:
Iniciado por charlyalegret Ver Mensaje
Puedes consultar el manual, imagecopyresized, http://php.net/manual/es/function.imagecopyresized.php
Saludos
Hola Charlyalegret, si, conozco la función y he trabajado con ella, pero no se como recortar la imagen desde el centro

gracias!
__________________
aste nagusia
  #4 (permalink)  
Antiguo 13/01/2012, 14:26
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 meses
Puntos: 140
Respuesta: Recortar imagen desde el centro

Pues ni idea porque yo no la he usado nunca. Ahora bien, yo leo:

Cita:
En otras palabras, imagecopyresized() tomará un área rectangular de src_image de ancho src_w y alto src_h en la posición (src_x,src_y) y la coloca en un área rectangular de dst_image de ancho dst_w y alto dst_h en la posición (dst_x,dst_y).
Supongo que tienes que jugar con el valor de src_x y src_y. Hacer algún cálculo para que recorte en la posición correcta. Se me ocurre lo siguiente.
Tomemos por ejemplo quieres 100x100, y partes de 300x200. tu función, podría hacer:

- mides el tamaño del original.
- Buscas el lado más largo. Si són iguales, no hay problema, redimensionas y punto.
- Haces: {[100 (lo deseado) / lado más corto(200) * lado más largo (300)] - 100 (deseado)} / 2 = 25
- Entonces:

src_w = src_h = 200px (el lado más corto)
scr_x (el lado largo)= 25
scr_y (el lado corto)= 0
dst_w = dst_h = 100

Algo así, no debería funcionar? Esta reflexión la he hecho así a lo pronto, puede contener errores o simplemente no funcionar...

Saludos
  #5 (permalink)  
Antiguo 13/01/2012, 14:41
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: Recortar imagen desde el centro

Resampleo de imagenes
Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #6 (permalink)  
Antiguo 14/01/2012, 02:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 133
Antigüedad: 15 años
Puntos: 4
De acuerdo Respuesta: Recortar imagen desde el centro

También estoy en busca de recortar imagenes, esta es la primer version del Script que estoy haciendo, te Explico:

Código PHP:
//obtengo los datos de  la imagen de prueba
list($ancho$alto$tipo$atributos) = getimagesize('img.jpg');

//Creo una ventana o mascara, es la parte que se mostrara de la imagen original.
//en este caso la mascara sera menor en un 20% a la original,  
//para ello recortare las orillas en 20%

$porcentaje=0.20;// si aumentas este número, será más la parte que recortes.
echo $ventanaAncho=$ancho-($ancho*$porcentaje);
echo 
"<br />";
echo 
$ventanaAlto=$alto-($alto*$porcentaje);
echo 
"<br />";
echo 
"<br />";
//↑ Son el tamaño de la ventana, intenta también con números fijos.
// $ventanaAncho=400; // por ejemplo
// $ventanaAncho=150; // por ejemplo


//muestro los atributos para ver el ancho y alto de la imagen de prueba
echo  $atributos;                     
echo 
"<br />";
//Estas son las coordenadas donde comenzara la ventana, 
//me ayuda a centrar la ventana.
echo $Ax=($ancho-$ventanaAncho)/2;      echo "<br />";
echo 
$Ay=($alto-$ventanaAlto)/2;
echo 
"<br />";

//creo "copia" de la imagen de prueba.
$original imagecreatefromjpeg('img.jpg');

//creo la imagen donde voy a montar la ventana o imagen recortada.
$thumb imagecreatetruecolor($ventanaAncho,$ventanaAlto); 

//Creo la imagen.
imagecopyresampled($thumb,$original,$Ax ,$Ay ,$ventanaAncho,$ventanaAlto,$ventanaAncho,$ventanaAlto); 
$laimagen=imagejpeg($thumb,'imgp.jpg',90);

//imagecopyresampled($dst_image, $src_image , $dst_x , $dst_y , $src_x , $src_y , $dst_w , $dst_h , $src_w , $src_h )
/*
tomará un área rectangular de src_image ('img.jpg') en este caso.
de ancho src_w
y alto src_h
en la posición (src_x,src_y)       [Ax Y Ay] en este caso.
y la coloca en un área rectangular de dst_image
de ancho dst_w
y alto dst_h
en la posición (dst_x,dst_y). 
*/ 

Espero se entienda y mejor aún, te sirva.


Suerte!!!

Etiquetas: imagenes, medio, recortar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:46.