Ciao a tutti.
Sono nuovo nel forum. Mi sto avvicinando al .NET da poco... Ho implementato una funzione di upload con ridimensionamento dell'immagine e creazione della sua thumbnail, ma i risultati non sono molto belli. Funziona tutto perfettamente ma la qualità dell'immagine risultante è indecente (come se fosse uno di quei jpeg con qualità 10% !!!!).
Il bello è che io uso ImageFormat.Png(formato direi migliore)... ed anche usando .Jpeg si ottiene la stessa schifezza.
Tutto in C#. Vi posto quelle che sono le righe essenziali
String UploadedFile = MyFile.PostedFile.FileName;
int ExtractPos = UploadedFile.LastIndexOf("\\") + 1;
String UploadedFileName = UploadedFile.Substring(ExtractPos,UploadedFile.Len gth - ExtractPos);
FileName.InnerHtml = UploadedFileName;
MyContentType.InnerHtml = MyFile.PostedFile.ContentType;
ContentLength.InnerHtml = MyFile.PostedFile.ContentLength.ToString();
FileDetails.Visible = true;
// salvo il file
MyFile.PostedFile.SaveAs(Request.PhysicalApplicati onPath + "\\public\\upload\\" + UploadedFileName );
if (imageUrl.IndexOf("/") >= 0 || imageUrl.IndexOf("\\") >= 0 )
{
//We found a / or \
Response.End();
}
imageUrl = "public/upload/" + imageUrl;
System.Drawing.Image fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(image Url));
// qui cè il codice che calcola le dimensioni delle 2 immagine ridimensionate (che non vi posto solo per motivi di lunghezza...
System.Drawing.Image.GetThumbnailImageAbort dummyCallBack = new System.Drawing.Image.GetThumbnailImageAbort(Thumbn ailCallback);
System.Drawing.Image Img = fullSizeImg.GetThumbnailImage(imageWidth, imageHeight, null, IntPtr.Zero);
System.Drawing.Image thumbNailImg = fullSizeImg.GetThumbnailImage(Lthumb, Hthumb, null, IntPtr.Zero);
//We need to create a unique filename for each generated image
DateTime MyDate = DateTime.Now;
String adesso = MyDate.ToString("ddMMyyhhmmss");
String MyString = adesso + ".jpg";
String MyStringThumb = adesso + "_thumb.jpg";
thumbNailImg.Save(Request.PhysicalApplicationPath + "\\public\\imageresize\\" + MyStringThumb, ImageFormat.Jpeg);
Img.Save(Request.PhysicalApplicationPath + "\\public\\imageresize\\" + MyString, ImageFormat.Jpeg);
thumbNailImg.Dispose();
Img.Dispose();
MyFile.Dispose();
thumbNailImg = null;
MyFile = null;
Img = null;
Ho provato anche con questa soluzione (dal msdn)
System.Drawing.Imaging.ImageCodecInfo[] Info = System.Drawing.Imaging.ImageCodecInfo.GetImageEnco ders();
System.Drawing.Imaging.EncoderParameters Params = new System.Drawing.Imaging.EncoderParameters(2);
Params.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Qu ality, 100L);
Params.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Co lorDepth, 24);
Response.ContentType = Info[1].MimeType;
e a metterli come paramentri ecc ecc ma non cambia nulla
Qualcunno mi sa dire perchè? sicuramente sbaglierò.. ma non capisco dove se tutto funziona![]()
Grazie mille....ciao
p.s. vi allego un risultato della foto per rendere meglio l'idea!!!