Avatar billede c-sharp Nybegynder
01. juni 2006 - 13:16 Der er 4 kommentarer og
1 løsning

Hjælp til at resize

Jeg bruger følgende til at resize mine jpg billeder:

        public static Bitmap resizeImage(string filePath, int width, int height)
        {
            System.Drawing.Bitmap bmpOut = null;

            try
            {
                Bitmap bmp = new Bitmap(filePath);
               
                if(height == 0)
                {
                    double tmpHeight = ((double)bmp.Height/(double)bmp.Width) * width;
                    height = (int)tmpHeight;
                }   

                if(width == 0)
                {
                    double tmpWidth = ((double)bmp.Width/(double)bmp.Height) * height;
                    width = (int)tmpWidth;
                }

                bmpOut = new Bitmap(width, height);
                Graphics g = Graphics.FromImage(bmpOut);
                g.CompositingQuality =  System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                g.SmoothingMode =  System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//                g.FillRectangle(Brushes.White, 0, 0, width, height);
                g.DrawImage(bmp, 0, 0, width, height);
                bmp.Dispose();
                GC.Collect();
            }
            catch
            {
                return null;
            }

            return bmpOut;
        }

Men den laver ikke nogle særlige flotte billeder. Hvad kan jeg gøre for at optimere den funktion?
Avatar billede thrytter Nybegynder
01. juni 2006 - 21:05 #1
Har også tidligere brugt Graphics til resize af billeder, men er gået væk fra denne p.gr.a. den svingende kvalitet.

Prøv følgende som skulle give en rimelig kvalitet.

public Bitmap resizeImage(string filePath, int width, int height)
{
  Bitmap bmpOut = null;
           
  try
  {            {
    Bitmap bmp = new Bitmap(filePath);
   
    if(height == 0)
    {
      double tmpHeight = ((double) bmp.Height/(double) bmp.Width) * width;
      height = (int)tmpHeight;
    }   

    if(width == 0)
    {
      double tmpWidth = ((double)bmp.Width/(double)bmp.Height) * height;
      width = (int)tmpWidth;
    }

    System.Drawing.Image img = System.Drawing.Image.FromFile(filePath);
                                       
    bmpOut = new Bitmap(img, width, height);               

    bmp.Dispose();
    img.Dispose();
  }           
  catch
  {
    return null;
  }

  return bmpOut;
}
Avatar billede c-sharp Nybegynder
02. juni 2006 - 09:33 #2
Hej thrytter, tak for din kommentar

Nu har jeg afprøvet dit forslag og jeg synes ikke at billedet bliver bedre end min oprindelige løsning, tværtimod. Har du andre forslag?
Avatar billede thrytter Nybegynder
02. juni 2006 - 10:22 #3
Har desværre ikke andre forslag.

Syntes selv at mine billeder skaleres pænt, men det afhænger nok mere af billederne end af den enkelte skaleringsmetode.
Avatar billede c-sharp Nybegynder
04. juli 2006 - 09:37 #4
Kan man evt. bruge aspkomponenten AspImage til at resize billeder i asp.net??
Avatar billede c-sharp Nybegynder
09. august 2006 - 10:11 #5
lukker igen...

tak til thrytter for dine forslag!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester