Foros del Web » Programando para Internet » ASP Clásico »

Redimensionar Imagenes on the Fly sin componentes

Estas en el tema de Redimensionar Imagenes on the Fly sin componentes en el foro de ASP Clásico en Foros del Web. Aqui os dejo un codigo bueno para realizar redimensiones de imagenes on the fly, sin componentes y con buena calidad de las imagenes. Se necesita ...
  #1 (permalink)  
Antiguo 02/06/2006, 19:16
Avatar de cokete  
Fecha de Ingreso: noviembre-2004
Mensajes: 224
Antigüedad: 20 años, 1 mes
Puntos: 0
Redimensionar Imagenes on the Fly sin componentes

Aqui os dejo un codigo bueno para realizar redimensiones de imagenes on the fly, sin componentes y con buena calidad de las imagenes.

Se necesita tener .net pero seguro que a muchos programadores de asp os valdra de mucho, como a mi.

Funciona de la siguiente manera.

Metes en cualquier pagina, ya sea asp o html la imagen con este formato y fuera.

Código HTML:
<img src="thumbnail.aspx?ForceAspect=False&Width=140&image=images/foto1.jpg"> 
Lo único que tienes que hacer es meter este fichero en la carpeta raiz, nada mas.

Thumbnail.aspx
Código:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
	try{
		Response.Cache.VaryByParams["Image;Width;Height;ForceAspect"] = true;
		Response.ContentType = "image/jpeg";
		System.Collections.Hashtable imageOutputFormatsTable = new System.Collections.Hashtable();
		imageOutputFormatsTable.Add(System.Drawing.Imaging.ImageFormat.Gif.Guid, System.Drawing.Imaging.ImageFormat.Gif);
		imageOutputFormatsTable.Add(System.Drawing.Imaging.ImageFormat.Jpeg.Guid, System.Drawing.Imaging.ImageFormat.Jpeg);
		imageOutputFormatsTable.Add(System.Drawing.Imaging.ImageFormat.Bmp.Guid, System.Drawing.Imaging.ImageFormat.Gif);
		imageOutputFormatsTable.Add(System.Drawing.Imaging.ImageFormat.Tiff.Guid, System.Drawing.Imaging.ImageFormat.Jpeg);
		imageOutputFormatsTable.Add(System.Drawing.Imaging.ImageFormat.Png.Guid, System.Drawing.Imaging.ImageFormat.Jpeg);
	
		string imageLocation;
		bool forceaspect = true;
		int newHeight;
		int newWidth;
		int reqHeight = 100;
		int reqWidth = 100;
		int origHeight;
		int origWidth;
		
		imageLocation = Server.MapPath(Request.QueryString["Image"]);
		if (Request.QueryString["Height"] != null){
			reqHeight = Convert.ToInt32(Request.QueryString["Height"]);
		}
		if (Request.QueryString["ForceAspect"] != null){
			forceaspect = Convert.ToBoolean(Request.QueryString["ForceAspect"]);
		}
		if(Request.QueryString["Width"] != null){
			reqWidth = Convert.ToInt32(Request.QueryString["Width"]);
		}
		if (Request.QueryString["ForceAspect"] == "true"){
			forceaspect = true;
		}
		
		System.Drawing.Bitmap origBitmap = new System.Drawing.Bitmap(imageLocation);
		origHeight = origBitmap.Height;
		origWidth = origBitmap.Width;
		
		if (forceaspect){
			//Force Aspect Change
			newHeight = reqHeight;
			newWidth = reqWidth;
		}		
		else{ 
			//Landscape
			newWidth = reqWidth;
			newHeight = (int)(((double)origBitmap.Height / (double)origBitmap.Width) * reqWidth);
		}		
		
		System.Drawing.Bitmap outputImage = new System.Drawing.Bitmap(origBitmap, newWidth, newHeight);
		//outputImage.SetResolution(24, 24); //use this line for lower resolution thumbnails
		outputImage.SetResolution(72, 72); 
					
		//outputImage.InterpolationMode = InterpolationMode.HighQualityBicubic;
		System.Drawing.Imaging.ImageFormat outputFormat = (System.Drawing.Imaging.ImageFormat)imageOutputFormatsTable[origBitmap.RawFormat.Guid];
		
		outputImage.Save(Response.OutputStream, outputFormat);
		outputImage.Dispose();
		origBitmap.Dispose();
	}
	catch (Exception ex){
		//log error so we may know the problem. you need to have write permits, of course on log path			
		System.IO.StreamWriter sw=null;
		try{
			sw=new System.IO.StreamWriter(Server.MapPath("error.txt"),true);
			sw.WriteLine("Error : " + ex.Message + " processing " + Request.QueryString["Image"]);
		}	 
		catch{}		
		finally{sw.Close();}
		//now display the error image
		Response.Redirect("thumberror.gif");
	}
}
</script>


Yo lo utilizo en mis portales programados con ASP y va de maravilla.

Un Saludo.
  #2 (permalink)  
Antiguo 02/06/2006, 19:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años
Puntos: 98
Solo la observación que es de .NET, pero gracias, supongo que hace referencia al post que habíamos comentado por allá. Tengo una pequeña duda, hay alguna razón en especial para tener esta resolución?

outputImage.SetResolution(72, 72);

Como lo habíamos comentado por allá, yo no pude darle mayor calidad a mis imágenes que fuera superior a 95, al parecer el stream se sobrepasaba y el resultado era no poder visualizar la imagen.

Gracias y saludos!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 03/06/2006, 12:43
Avatar de cokete  
Fecha de Ingreso: noviembre-2004
Mensajes: 224
Antigüedad: 20 años, 1 mes
Puntos: 0
Si te digo la verdad... yo no encuentro la diferencia entre poner 72, 25 o 95 jejeje... tendre que ir al oculista.

No, enserio, no he apreciado diferencia entre unos valores u otros, lo del 72 es por poner algo intermedio.

Un Saludo¡
  #4 (permalink)  
Antiguo 03/06/2006, 14:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años
Puntos: 98
Ok, habrá que probarlo...gracias de nuevo!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 21/07/2006, 09:52
 
Fecha de Ingreso: diciembre-2005
Mensajes: 3
Antigüedad: 19 años
Puntos: 0
Devolver tamaño original de la imagen

Quisiera hacer una pregunta, a ver si alguno de ustedes me puede ayudar.
Yo quisiera que el .aspx me devuelva de alguna manera el tamaño original de la foto, para yo poder mostrarlo en el listado.
Saludos.
  #6 (permalink)  
Antiguo 23/07/2006, 15:28
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
alguno de ustedes sabe como guardar esa imagen resultante en una carpeta?
lo necesito para no estar llamando al procedimiento cada que un usuario lo necesite ver la imagen reducida, seria mas practico solo reducirla una ves y guardar el resultado asi los usuarios verian ya la imagen redimencionada.

saben como hacerlo en este codigo?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #7 (permalink)  
Antiguo 23/07/2006, 17:18
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 21 años
Puntos: 6
¿Saben lo que sería la leche?, insertar una marca de agua a la imagen redimensionada...

¿Alguien tiene idea?

Salu2!
  #8 (permalink)  
Antiguo 23/07/2006, 19:55
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
oye porfa abre otro tema para lo de las marcas de agua porque despues no responden mi pregunta
en todo caso te la respondo pero si la quieres alargar abre otra, porfa
gracias

http://labs.insert-title.com/labs/article832.aspx

alguien sabe como guardar la imagen redimensionada en una carpeta?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #9 (permalink)  
Antiguo 23/07/2006, 20:47
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años
Puntos: 16
Cita:
Iniciado por lexus
oye porfa abre otro tema para lo de las marcas de agua porque despues no responden mi pregunta
jajaja y por que tu no haces lo mismo para tu pregunta?
  #10 (permalink)  
Antiguo 24/07/2006, 06:05
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
por eso respondi la pregunta yo mismo pero bueno no armemos un debate sobre esto por favor alguien que me ayude a guardar la imagen resultante redimensionada al disco.
gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #11 (permalink)  
Antiguo 26/07/2006, 16:43
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años
Puntos: 16
alguien supo como de manera facil implementar una mejora de calidad con este script?

a mi me pixelea muy feo las imagenes, pueden verlo en www.ajalas.com (solo funcionan las noticias) y ver que algunas (tecnologia) me rompe los pixeles

ejemplo:
http://www.ajalas.com/noticias.asp?i...cat=Tecnologia

la imagen original de esa noticia es esta:
  #12 (permalink)  
Antiguo 26/07/2006, 19:10
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 10 meses
Puntos: 535
Código:
		//outputImage.InterpolationMode = InterpolationMode.HighQualityBicubic;
Esa línea la tenés comentada?
Si es así, fijate de descomentarla y si no es así, buscá jugar con las opciones que dan acá:

http://msdn2.microsoft.com/es-es/lib...tionmode.aspx#

otra fuente que consulté:
http://west-wind.com/weblog/posts/626.aspx


por cierto, no tengo ni idea si eso funcionará. todo salió de una búsqueda en gugl ;)
__________________
...___...
  #13 (permalink)  
Antiguo 26/07/2006, 19:46
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
y alguno de ustedes sabe como hacer que esa imagen qeude guardada en una carpeta de mi server?
gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #14 (permalink)  
Antiguo 26/07/2006, 21:14
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años
Puntos: 16
fijate que si la "descomento" no me muestra imagenes
  #15 (permalink)  
Antiguo 28/07/2006, 10:53
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años
Puntos: 16
Cita:
Iniciado por lexus
y alguno de ustedes sabe como hacer que esa imagen qeude guardada en una carpeta de mi server?
gracias.
en el foro de .net vi esto:
Código HTML:
 Dim imagen As New Bitmap(New Bitmap(ruta), 320, 288)
imagen.Save(ruta2, System.Drawing.Imaging.ImageFormat.Jpeg)
donde ruta es el archivo de origen y ruta2 es la ruta donde se guardara la nueva imagen


PD sigo sin poder ver las imagenes con calidad, ya descomente esa linea y no me muestra nada
  #16 (permalink)  
Antiguo 23/08/2006, 01:08
 
Fecha de Ingreso: abril-2005
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 26
Cita:
Iniciado por cokete Ver Mensaje
Si te digo la verdad... yo no encuentro la diferencia entre poner 72, 25 o 95 jejeje... tendre que ir al oculista.

No, enserio, no he apreciado diferencia entre unos valores u otros, lo del 72 es por poner algo intermedio.

Un Saludo¡
A decir verdad, no creo que encontreis la diferencia en una pantalla. El término resolución se aplica a la cantidad de pixeles por unidad de medida (cm, pulgadas,...) que se van a imprimir en un dispositivo analógico (papel vaya). Da igual si poneis 72 o 300 porque lo que cuenta en pantalla es el tamaño total de pixeles. Donde si he visto diferencia es a la hora de imprimir, por ejemplo creando gráficos de excel, donde puedes establecer por un lado el tamaño en la pantalla y por otro la resolución de la imagen. En este foro encontrareis ese artículo y podréis ver como se hace.
  #17 (permalink)  
Antiguo 25/04/2007, 06:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 20 años
Puntos: 1
Re: Redimensionar Imagenes on the Fly sin componentes

Pregunta: estas imagenes redimensionadas en el acto por el servidor quedan en los temporales del explorer o las cargaria cada vez que ingresa nuevamente? Porque si no quedan creo que seria como dice lexus, guardarla directamente al servidor.
  #18 (permalink)  
Antiguo 25/04/2007, 07:23
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años
Puntos: 7
Re: Redimensionar Imagenes on the Fly sin componentes

Cita:
Iniciado por u_goldman Ver Mensaje
Solo la observación que es de .NET, pero gracias, supongo que hace referencia al post que habíamos comentado por allá. Tengo una pequeña duda, hay alguna razón en especial para tener esta resolución?

outputImage.SetResolution(72, 72);

Como lo habíamos comentado por allá, yo no pude darle mayor calidad a mis imágenes que fuera superior a 95, al parecer el stream se sobrepasaba y el resultado era no poder visualizar la imagen.

Gracias y saludos!
El ojo humano no puede percibir imagenes en monitores/tv superiores a 72ppp con lo que es una tonteria aumentar la resolucion de una imagen mas allá de 72ppp. Otra cosa es impresiones ;)


ppp: pixeles por puntos (Dots per inch)

Ala, a mandar
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #19 (permalink)  
Antiguo 27/04/2007, 10:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 139
Antigüedad: 20 años
Puntos: 1
Re: Redimensionar Imagenes on the Fly sin componentes

Probe el codigo en un sitio que estoy desarrollando y la verdad va perfecto, pero se me presento el problema que sospechaba.
Estas imagenes al ser redimensionadas en el acto por el servidor, no quedan en los temporales, por lo cual si el usuario aprieta en un link y despues vuelve la imagen tiene que ser cargada nuevamente.
Esto es un problema en mi caso porque es una lista de imagenes bastante grande y vuelve a cargar todo.

Hay alguna forma de que estas imagenes queden en los temporales ?
Y si no hay forma, se pueden grabar estas imagenes redimensionadas al servidor directamente para que si queden como temporales?
  #20 (permalink)  
Antiguo 30/01/2012, 07:59
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
Respuesta: Redimensionar Imagenes on the Fly sin componentes

hola, ya se que este tema es muy viejo..

pero este codigo me funcinoaba muy bien.
hasta qeu en el servidor instalamos el .net framework 4.0 y por alguna extrana razon este codigo dejo de funcionar..
alguien sabe a que se debe? que puedo hacer para que me funcione en este framework tambien?

estoy en windows 2003 server, porqeu en mi localhost en windows xp si me funcinoa bien, pero cunado lo monto a ese servidor ya no me funcinoa, antes de instalar el framework si funcionaba muy bien.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #21 (permalink)  
Antiguo 03/02/2012, 11:28
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años, 1 mes
Puntos: 54
Respuesta: Redimensionar Imagenes on the Fly sin componentes

Cita:
Iniciado por lexus Ver Mensaje
hola, ya se que este tema es muy viejo..

pero este codigo me funcinoaba muy bien.
hasta qeu en el servidor instalamos el .net framework 4.0 y por alguna extrana razon este codigo dejo de funcionar..
alguien sabe a que se debe? que puedo hacer para que me funcione en este framework tambien?

estoy en windows 2003 server, porqeu en mi localhost en windows xp si me funcinoa bien, pero cunado lo monto a ese servidor ya no me funcinoa, antes de instalar el framework si funcionaba muy bien.
quizás intentando desinstalar el framework 4.0 ?
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
  #22 (permalink)  
Antiguo 03/02/2012, 13:29
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años
Puntos: 4
Respuesta: Redimensionar Imagenes on the Fly sin componentes

no puedo desinstalar el framework 4.0 ya que tengo instalado el mysql 5.5 y este me exige tener este framework

alguna otra solucion que pueda aplicar?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #23 (permalink)  
Antiguo 05/02/2012, 12:47
Avatar de Julcar  
Fecha de Ingreso: noviembre-2007
Ubicación: C:\inetpub\wwwroot\Guayaquil
Mensajes: 1.507
Antigüedad: 17 años, 1 mes
Puntos: 54
Respuesta: Redimensionar Imagenes on the Fly sin componentes

Cita:
Iniciado por lexus Ver Mensaje
no puedo desinstalar el framework 4.0 ya que tengo instalado el mysql 5.5 y este me exige tener este framework

alguna otra solucion que pueda aplicar?
has apuntado el error que da si llamas directamente al archivo?
__________________
Linux no es el único S.O. libre, conoce a ReactOS el Windows Libre!
"Si mis respuestas te dan la calma, espárceme un poco de karma"
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:10.