Foros del Web » Programando para Internet » Javascript »

Redimensionar imagenes con Javascript

Estas en el tema de Redimensionar imagenes con Javascript en el foro de Javascript en Foros del Web. Hola! Necesito redimensionar imagenes sin que pierdan la proporcion de tamaño. Probe a usar max-width y max-height de CSS, y funcionan de maravilla, simple y ...
  #1 (permalink)  
Antiguo 12/11/2009, 03:36
 
Fecha de Ingreso: abril-2005
Mensajes: 46
Antigüedad: 19 años, 7 meses
Puntos: 0
Redimensionar imagenes con Javascript

Hola!

Necesito redimensionar imagenes sin que pierdan la proporcion de tamaño. Probe a usar max-width y max-height de CSS, y funcionan de maravilla, simple y sencillo ¿no?, Pues no, porque ahi esta el MS IE para fastidiar. Funciona con todos navegadores excepto IE.

El caso es que he leido por ahi que debe de hacer usando javascript para que funcione tambien con IE. Mi pagina esta desarrollada en php. No tengo idea de programar en javascript asi que, viendo algo de codigo por internet, he improvisado una funcion que, en la parte logica funcionara perfectamente, pero supongo que tendra errores de sintaxis, si podeis corregirmela os lo agradeceria.

Código:
<script>
function Ancho_y_Alto(mX,mY,imagen){
	foto=new Image();
	foto.src=imagen;
	var rX=foto.width;
	var rY=foto.height;
	var varX=110;
	var varY=110;
	if(rX > mX){ 
		varX=mX;
		if(rY / (rX/mX) > mY){
			varY=mY;
			varX=rX/(rY/mY);
		}else{
			varY=rY/(rX/mX);
		}
	}else{
		if(rY > mY){
			varY=mY;
			varX=rX/(rY/mY);
		}else{
			varX=rX;
			varY=rY;
		}
	}
	return "width=" + varX + " height=" + varX;
}
</script>
Por lo demas, necesito que me expliqueis como emplear esta funcion en una pagina php/html, es decir, donde declararle y, lo que es mas importante, donde y como llamarla.

Si os fijais mi idea es que la funcion te devuelva una cadena del estilo "width=400 height=240" y esta cadena, pegarla aplicarla directamente en una etiqueta IMG. Aunque creo que este metodo funciona para PHP, en javascript igual no... si teneis cualquier idea para mejorarla u otra manera de hacer esto...

Bueno como veis necesito ayuda, espero vuestra respuesta!
Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 12/11/2009, 05:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Redimensionar imagenes con Javascript

Y ya que estás en php no te convendría redimensionarla con GD? Porque con javascript sólo redimensionarás el tamaño visual, pero no el peso, y en cambio eso sí lo lograrás con GD...
Por otro lado, creo que tendrías que trabajarlo un poco más el script. Algo así:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<script>
function Ancho_y_Alto(mX,mY,imagen,scope){
	var sc=scope || document.body,varX,varY, rX, rY,foto,image;
	sc.appendChild(foto=document.createElement('img')).src=imagen;
	foto.style.visibility='hidden';
	image=new Image().src=imagen;
	rX=foto.offsetWidth;
	rY=foto.offsetHeight;
	if(rX > mX){ 
		varX=mX;
		if(rY / (rX/mX) > mY){
			varY=mY;
			varX=rX/(rY/mY);
		}else{
			varY=rY/(rX/mX);
		}
	}else{
		if(rY > mY){
			varY=mY;
			varX=rX/(rY/mY);
		}else{
			varX=rX;
			varY=rY;
		}
	}
	setTimeout(function(){
		foto.style.width=varX+'px';
		foto.style.height=varY+'px';
		foto.style.visibility='visible';
	},10);
}
Ancho_y_Alto(100,300,'1.jpg');
Ancho_y_Alto(100,300,'20.jpg');
Ancho_y_Alto(100,300,'10.jpg');
Ancho_y_Alto(100,300,'15.jpg');

</script></body>
</html>

Última edición por Panino5001; 12/11/2009 a las 05:43
  #3 (permalink)  
Antiguo 12/11/2009, 05:14
 
Fecha de Ingreso: abril-2005
Mensajes: 46
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Redimensionar imagenes con Javascript

No. Se me ha olvidado comentarlo, el servidor no permite el uno de GD. Es decir, ni getimagesize(), ni imagesx() ni imagesy(), etc...

Saludos! Animo.... xD
  #4 (permalink)  
Antiguo 12/11/2009, 06:43
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Redimensionar imagenes con Javascript

Hola

A ver si te sirve este otro

Código javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function redimensionar (accion) {
  5. var height, width
  6. var alto = document.getElementById("mesa").height;
  7. var ancho = document.getElementById("mesa").width;
  8. if (accion == 'sumar') {
  9. height = parseInt(alto+10);
  10. width = parseInt(ancho+10);
  11. document.getElementById("mesa").style.height = height + "px";
  12. document.getElementById("mesa").style.width = width + "px";
  13. }
  14. else
  15. {
  16. height = parseInt(alto-10);
  17. width = parseInt(ancho-10);
  18. document.getElementById("mesa").style.height = height + "px";
  19. document.getElementById("mesa").style.width = width + "px";
  20. }
  21. }
  22. </script>
  23. </head>
  24. <body>
  25. <img src="iconos/anixmas11.gif" id="mesa" width="50px" height="53px" /><br/>
  26. <input type="button" value="+" onclick="redimensionar('sumar')" /><br/>
  27. <input type="button" value="-" onclick="redimensionar()" />
  28. </body>
  29. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 18:33.