
23/07/2008, 03:36
|
| | Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 17 años, 2 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)...
|