Just nu i M3-nätverket
Jump to content

Skala ner bilden C# ASP.NET


Phenomen

Recommended Posts

Jag använder AsyncFileUpload. Användaren får då ladda upp flera bilder.

 

Så här ser koden

 

    
protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
   {
       if (!AsyncFileUpload1.HasFile) return;
       string GuidFileName = Helpish.GenerateGuidFileName(Helpish.GetFileExtension(e.FileName));
       string fullpath = Helpish.GetImagesFolderPath() + GuidFileName;

       AsyncFileUpload1.SaveAs(fullpath)

........
.....

;

Jag vill inte skrämma bort användaren genom client/server-side validering.

 

Jag vill helt enkelt.

 

If (fileSize > 1,5MB)

ScaleThisShitDown(fullpath);

 

 

Tips!?

Link to comment
Share on other sites

   public static System.Drawing.Image ScaleImage(System.Drawing.Image image, int maxHeight)
   {
       var ratio = (double)maxHeight / image.Height;
       var newWidth = (int)(image.Width * ratio);
       var newHeight = (int)(image.Height * ratio);
       var newImage = new System.Drawing.Bitmap(newWidth, newHeight);
       using (var g = System.Drawing.Graphics.FromImage(newImage))
       {
           g.DrawImage(image, 0, 0, newWidth, newHeight);
       }
       return newImage;
   }

 

Bilderna blir betydligt mindre. Testade på en bild som är 2mb,

ScaleImage(Img, 1000)

Storleken på den nya bilden blev 200kb

Link to comment
Share on other sites

med e.filesize får du reda på filstorleken. Är den större än vad du vill, anropa ovan föreslagna metod.

Dock måste du först öppna filen, kontrollera att det är en bild och SEDAN anropa metoden, men att skicka in det som ett bildobjekt (dvs även öppna som ett bildobjekt efter att du vet att det är en bild).

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...