Foros del Web » Programando para Internet » ASPX (.net) »

Guardar imagen redimensionada

Estas en el tema de Guardar imagen redimensionada en el foro de ASPX (.net) en Foros del Web. Hola, amigos: He conseguido un código que permite redimensionar imágenes para mostrarlas como thumbnails, reduciendo su tamaño. Utilizando el mismo código, intento guardar esas imágenes ...
  #1 (permalink)  
Antiguo 07/02/2010, 04:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 16
Antigüedad: 16 años, 1 mes
Puntos: 0
Guardar imagen redimensionada

Hola, amigos:

He conseguido un código que permite redimensionar imágenes para mostrarlas como thumbnails, reduciendo su tamaño. Utilizando el mismo código, intento guardar esas imágenes en una carpeta, pero mis conocimentos de C# son muy limitados todavía. Os muestro el código:

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];
        
        //Ahora deberíamos guardar la imagen:
        outputImage.Save(imageLocation,System.Drawing.Imaging.ImageFormat.Jpeg);
        
        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");
          Response.Write("Ha habido un error");
    }
}
</script>
Intento que la nueva imagen generada (outputImage) me la guarde en una carpeta, cuya URL la mando a esta página mediante QueryString.

Agradecería me ayudarais.

Etiquetas: aspx
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 17:44.