Foros del Web » Programando para Internet » PHP »

Redimensionado de imagenes externas

Estas en el tema de Redimensionado de imagenes externas en el foro de PHP en Foros del Web. Hola Hola, os agradecería que me pudieseis ayuda con este código, estoy intentando redimensionar una imagen externa en la Web, y navegando en busca algún ...
  #1 (permalink)  
Antiguo 14/01/2010, 09:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
Redimensionado de imagenes externas

Hola Hola, os agradecería que me pudieseis ayuda con este código, estoy intentando redimensionar una imagen externa en la Web, y navegando en busca algún código que me permita hacer esto, encontré el siguiente pero me hace todo los contrario de lo que quiero, la imagen la agranda en lugar de hacerla mas pequeña que es lo que intento.

Código PHP:

<?
# indicar la ruta de la imagen
$original="http://www.web.com/images/caballos.jpg";
for(
$i=strlen($original)-1;$i>0;$i--){
if (
substr($original,$i,1)=="."){
$tipo=substr($original,$i+1);
break;
}
}
# dimesiones del original
$tamano=getimagesize($original);
$orig_Ancho $tamano[0];
$orig_Alto =$tamano[1];
# factores de ampliación, distintos para provocar una distorsión
# en la imagen resultante
$ampliacion_X=2;
$ampliacion_Y=1.5;
# dimesiones de la imagen resultante. Vamos a dejarla a sangre
# (sin márgenes en blanco) y vamos a reproducir el original
# sin reencuadrar así que las esquinas superiores izquierdas de
# ambas imágenes estarán en 0,0.
$resultado_Ancho=$orig_Ancho*$ampliacion_X;
$resultado_Alto$orig_Alto*$ampliacion_Y;
#creamos una imagen a partir de la original. Debemos elegir
#la funcion adecuada al tipo de imagen original
switch($tipo){
case 
"jpg":
$importada=imagecreatefromjpeg($original);
break;
case 
"png":
$importada=imagecreatefrompng($original);
break;
case 
"gif":
$importada=imagecreatefromgif($original);
break;
}
# insertamos la cabecera de la nueva imagen
Header("Content-type:image/jpeg");
#creamos una imagen nueva en color verdadero
$im_base=imagecreatetruecolor($resultado_Ancho,$resultado_Alto);
#aplicamos un color de fondo a la nueva imagen
#para poder visualizar que incluye la transparencia del png o del gif
if($tipo=="png" OR $tipo=="gif"){
$fondo=imagecolorAllocate($im_base,255,255,200);
imagefill($im_base,0,0,$fondo);
}
#superponemos la imagen importada sobre la que acabamos de crear
imagecopyresampled($im_base,$importada,0,0,0,0,
$resultado_Ancho$resultado_Alto,
$orig_Ancho,$orig_Alto);
# visualizamos la imagen resultante
imagejpeg($im_base);
ImageDestroy();
?>

Que es lo que tengo que cambiar en ese código, o que valores tengo que poner para que la imagen que muestre sea mas pequeña o del tamaño que yo le de la original ?


Gracias anticipadas.
  #2 (permalink)  
Antiguo 14/01/2010, 11:27
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Respuesta: Redimensionado de imagenes externas

hasta tienes el codigo documentado, trata de leerlo, si no le pones ganas nadie te va a ayudar tampoco

# factores de ampliación, distintos para provocar una distorsión
# en la imagen resultante
$ampliacion_X=2;
$ampliacion_Y=1.5;
  #3 (permalink)  
Antiguo 14/01/2010, 12:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

Hola Nefertiter, gracias por responder.

No se si has leído lo que yo pregunto, igual me he liado explicándome, pero lo que quiero hacer es todo lo contrario, como hay dice # factores de ampliación.

No se si con ese codigo, cambiando algo se puede Reducir la imagen en lugar de ampliarla.


P.D. te puedo decir que ganas si que le pongo, pero no llego a comprender muy bien como vosotros que estáis mas puesto en esto, he revisado muchos post y he intentado hacerlo, pero por desconocimiento lo unico que puedo hacer es copiar el código y codificarlo hasta donde puedo para ver si consigo reducir una imagen.

Un saludo.
  #4 (permalink)  
Antiguo 14/01/2010, 12:15
 
Fecha de Ingreso: enero-2010
Ubicación: Monterrey
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

Pues solo multiplicas por algún número menor de 1, no? con eso estarías reduciendola
  #5 (permalink)  
Antiguo 14/01/2010, 12:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

También lo he intentado con números negativos, pero si lo pongo así no muestra la imagen.


Salu2.
  #6 (permalink)  
Antiguo 14/01/2010, 12:23
 
Fecha de Ingreso: enero-2010
Ubicación: Monterrey
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
me refiero a .5 .03 .84 .15 etc

usando otra imagen, cambie los valores a
$ampliacion_X=.2;
$ampliacion_Y=.5;

y hizo la reducción correctamente

Última edición por GatorV; 14/01/2010 a las 14:40
  #7 (permalink)  
Antiguo 14/01/2010, 12:45
 
Fecha de Ingreso: octubre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

Estupendo, si señor muchas gracias, de esa forma si que ha reducido la imagen.

Lo que si he notado es que tarda mucho en mostrar la imagen, bastante mas mostrándola completa.


Un saludo.
  #8 (permalink)  
Antiguo 14/01/2010, 13:00
 
Fecha de Ingreso: enero-2010
Ubicación: Monterrey
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

creo que por que, si es que es externa, tienes que descargar la imagen y modificarla y luego regenerarla.

Sería bueno que pensaras en un tipo de caché para esto, pues en producción a larga escala te podría dar problemas de rendimiento
  #9 (permalink)  
Antiguo 14/01/2010, 13:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 38
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Redimensionado de imagenes externas

Gracias nuevamente, mirare a ver si consigo algo, lo malo que la imagen que pongo en el enlace va cambiando, vamos que nunca es la misma.


Un saludo.

Etiquetas: externas, imagenes
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 14:34.