Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/07/2008, 03:36
Ciberyo
 
Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Galeria de imagenes

Ya he la manera de hacerlo, el problema que tengo es que necesitaria que al redimensionar la miniatura mantuviese las proporciones para que no salga achatada, ¿alguien sabe como hacerlo?

Código:
      // Initialize variables

        string sSavePath;
        string sThumbExtension;
        int intThumbWidth;
        int intThumbHeight;

        // Set constant values

        sSavePath = "http://www.forosdelweb.com/images/";
        sThumbExtension = "_thumb";
        intThumbWidth = 160;
        intThumbHeight = 120;

        // If file field isn’t empty

        if (filUpload.PostedFile != null)
        {
            // Check file size (mustn’t be 0)

            HttpPostedFile myFile = filUpload.PostedFile;
            int nFileLen = myFile.ContentLength;
            if (nFileLen == 0)
            {
                lblOutput.Text = "No se ha subido ningun archivo.";
                return;
            }

            // Check file extension (must be JPG)

            if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpg"&&
                    System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".gif"&&
                        System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".bmp")
            {
                lblOutput.Text = "La extension del archivo debe ser JPG, GIF o BMP";
                return;
            }
            string extension = System.IO.Path.GetExtension(myFile.FileName).ToLower();
            string idunico = DateTime.Now.ToFileTimeUtc().ToString();
            // Read file into a data stream

            byte[] myData = new Byte[nFileLen];
            myFile.InputStream.Read(myData, 0, nFileLen);

            // Make sure a duplicate file doesn’t exist.  If it does, keep on appending an 

            // incremental numeric until it is unique

            string sFilename = System.IO.Path.GetFileName(myFile.FileName);
 
                sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
                                 +idunico+extension;

            // Save the stream to disk

            System.IO.FileStream newFile
                    = new System.IO.FileStream(Server.MapPath(sSavePath + sFilename),
                                               System.IO.FileMode.Create);
            newFile.Write(myData, 0, myData.Length);
            newFile.Close();

            // Check whether the file is really a JPEG by opening it

            System.Drawing.Image.GetThumbnailImageAbort myCallBack =
                           new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
            Bitmap myBitmap;
            try
            {
                myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename));

                // If jpg file is a jpeg, create a thumbnail filename that is unique.
                string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
                                                         + sThumbExtension + extension;
                    sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) +
                                  idunico + sThumbExtension + extension;

                // Save thumbnail and output it onto the webpage

                System.Drawing.Image myThumbnail
                        = myBitmap.GetThumbnailImage(int)(int)myBitmap.Width,
                                                     (int)(int)myBitmap.Height, myCallBack, IntPtr.Zero);
                myThumbnail.Save(Server.MapPath(sSavePath + sThumbFile));
                imgPicture.ImageUrl = sSavePath + sThumbFile;

                // Se muestra el resultado de la operación

                lblOutput.Text = "El archivo ha sido subido de forma satisfactoria";

                // Destroy objects

                myThumbnail.Dispose();
                myBitmap.Dispose();
            }
            catch (ArgumentException errArgument)
            {
                // The file wasn't a valid jpg file

                lblOutput.Text = "El archivo no es un JPG valido.";
                System.IO.File.Delete(Server.MapPath(sSavePath + sFilename));
            }
        }

Última edición por Ciberyo; 24/07/2008 a las 03:54 Razón: Correccion de la linea System.Drawing.Image myThumbnail = myBitmap.GetThumbnailImage(int)(int)...