Avatar billede psn Nybegynder
15. oktober 2004 - 22:14 Der er 10 kommentarer og
1 løsning

Dårlig kvalitet på billede efter upload

Hej

Jeg har "lånt" nedenstående script, men har problemer med at kvaliteten på de uploadede billeder ikke er særlig god. Er der nogle der ved hvorfor?

public void Upload_Click(object sender, System.EventArgs e)
{
string dir = "~/images/galleri/diverse/";
string strFileName;
if(uploadedFile1.PostedFile.FileName.IndexOf("\\") > 0)
{
    strFileName = uploadedFile1.PostedFile.FileName.Substring(uploadedFile1.PostedFile.FileName.LastIndexOf("\\") + 1);

}
else { strFileName = "ukendt.fil"; }

if(!File.Exists(Server.MapPath(dir + strFileName)))
{
    int MaxSize = 405;
    try
    {
    System.Drawing.Image image = new System.Drawing.Bitmap(uploadedFile1.PostedFile.InputStream);
    uploadedFile1.PostedFile.SaveAs(Server.MapPath(dir + strFileName));
    System.Drawing.Bitmap bOrg = (System.Drawing.Bitmap)image;
    System.Drawing.Imaging.ImageFormat format = image.RawFormat;
               
    if(image.Width>MaxSize || image.Height>MaxSize)
    {
        Bitmap b = Resize(bOrg,MaxSize,MaxSize);
        b.Save(Server.MapPath(dir + strFileName ), format);
    }
    else
    { //Gem original da billede allerede er mindre end 100px
        uploadedFile1.PostedFile.SaveAs(Server.MapPath(dir + strFileName));
    }
    Label1.Text = "Billedet er uploaded";
    }
    catch
    {
        Label1.Text= "Der skete en fejl ved uploading af billedet";       
    }
}
else
{
    Label1.Text = "Filnavn eksisterer allerede, prøv at ombøbe billedet!";
}

private static Bitmap Resize(Bitmap b, int MaxHeight, int MaxWidth)
        {
            int nWidth = b.Width;
            int nHeight = b.Height;
            if(nHeight>MaxHeight)
            {
                nWidth = (int)((((double)b.Width)/((double)b.Height))*((double)MaxHeight));               
                nHeight = MaxHeight;
            }
            if(nWidth>MaxWidth)
            {
                nWidth=MaxWidth;
                nHeight = (int)((((double)b.Height)/((double)b.Width))*((double)MaxWidth));
            }
            Bitmap bTemp = (Bitmap)b.Clone();
           
           
            b = new Bitmap(nWidth, nHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            double nXFactor = (double)bTemp.Width/(double)nWidth;
            double nYFactor = (double)bTemp.Height/(double)nHeight;
            for (int x = 0; x < b.Width; ++x)
                for (int y = 0; y < b.Height; ++y)
                    b.SetPixel(x, y, bTemp.GetPixel((int)(Math.Floor(x * nXFactor)),
                        (int)(Math.Floor(y * nYFactor))));
            return b;
        }
Avatar billede arne_v Ekspert
15. oktober 2004 - 22:16 #1
Jeg er *meget* skeptisk overfor den resize !
Avatar billede arne_v Ekspert
15. oktober 2004 - 22:16 #2
Find et proff. værktøj tiul at resize billeder med.
Avatar billede psn Nybegynder
15. oktober 2004 - 22:18 #3
har du nogle forslag til sådanne værktøjer?
Avatar billede arne_v Ekspert
15. oktober 2004 - 22:20 #4
Lidt uden for mit ekspertise område.

Jeg kan godt "op google" noget, men du har brug for råd fra en som ved noget
om billeder.

Hoster du selv eller er det web hotel ?  (det kan msåke være et problem at kalde
et eksternt tool på et web hotel)
Avatar billede psn Nybegynder
15. oktober 2004 - 22:24 #5
ok fair nok. Det er et web hotel i øvrigt.
Avatar billede arne_v Ekspert
15. oktober 2004 - 22:28 #6
Hvis det værktøj du måtte find ekommer som et library, så er det selvfølgelig
bare at referere til rette assembly, importere rette namespace og kalde det.

Hvis du får et eksternt program der skal køres så er der noget a la:

Process.Start("navn-på-exe-fil", "/diverse-switches input-fil output-fil");
Avatar billede cms Nybegynder
16. oktober 2004 - 15:36 #7
Du kan jo også prøve:

public Bitmap ResizeBitmap( Bitmap b, int nWidth, int nHeight )
{
  Bitmap result = new Bitmap( nWidth, nHeight );
  using( Graphics g = Graphics.FromImage( (Image) result ) )
    g.DrawImage( b, 0, 0, nWidth, nHeight );
  return result;
}
Avatar billede snepnet Nybegynder
16. oktober 2004 - 23:56 #8
prøv at tage et kig her :
http://www.eksperten.dk/spm/521948

og specielt det link der er til den her :
http://dotnetjunkies.com/WebLog/bsblog/archive/2004/01/26/6103.aspx
Avatar billede snepnet Nybegynder
06. november 2004 - 00:14 #9
ellers kan du måske bruge denne her ?
http://www.eksperten.dk/spm/550297
mvh
Avatar billede psn Nybegynder
09. november 2004 - 17:38 #10
så er jeg tilbage igen. Beklager den lange svartid, men har haft en del at se til. Jeg har endelig fået kvaliteten i top på mine uploadede billeder, og det kan jeg takke dig, snepnet for, da det seneste link var super. Så smid et svar, så du kan få nogle point.
Avatar billede snepnet Nybegynder
09. november 2004 - 19:46 #11
alletiders - så får du et svar her :o)
mvh
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