Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/06/2006, 19:04
Avatar de cokete
cokete
 
Fecha de Ingreso: noviembre-2004
Mensajes: 224
Antigüedad: 20 años
Puntos: 0
Por Fin.....

Querido amigo Lexus.... ya he encontrado algo realmente que merezca la pena... por lo menos para lo que yo necesito. Te explico.

Es una simple pagina aspx, codificada en C, pero vamos que no hay que tocarla para nada. 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"> 
De esta manera te muestra la imagen redimensionada, con una calidad medianamente buena, no como lo que habia visto anteriormente. Y sin ningún problema. Encontre no hace mucho un codigo que hacia lo mismo pero no me dejaba manipular la imagen despues de mostrarla.... esto funciona a la perfección.

Te paso aqui el codigo del archivo 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>
A mi me funciona perfect, si teneis alguna duda escribirme....
Un Saludo a todos.