Avatar billede trumf Nybegynder
11. august 2006 - 08:34 Der er 8 kommentarer og
2 løsninger

GetThumbnailImage og giffer

Hejsa E

Jeg har lavet en funktion med GetThumbnailImage og det virker også meget fint med jpg filer, men giffer taber en del af kvaliteten og bliver grumsede. Det er helt slemt hvis en gif har transperant baggrund, så bliver det helt sort.

Kan nogen hjælpe med den ?
Avatar billede driis Nybegynder
11. august 2006 - 22:53 #1
Helt specifikt kan jeg ikke hjælpe, men GetThumbnailImage er optimeret for hastighed og kendt for at kunne give dårlige resultater. At create et  bitmap på den rette størrelse og derefter bruge DrawImage deri, er kendt for at give gode resultater. Der er en vis performance penalty, men i de fleste applikationer vil den ikke kunne mærkes.
Avatar billede trumf Nybegynder
12. august 2006 - 13:44 #2
Hejsa driis

jeg har brugt følgende kode: http://www.csharp-station.com/Articles/Thumbnails.aspx
og skrevet lidt af det om til dette:

            // create an image object, using the filename we just retrieved
            System.Drawing.Image image = System.Drawing.Image.FromFile(file);

            // create the actual thumbnail image
            System.Drawing.Image thumbnailImage = image.GetThumbnailImage(Convert.ToInt16(imgWidth), Convert.ToInt16(imgHeight), new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
           
            // make a memory stream to work with the image bytes
            MemoryStream imageStream = new MemoryStream();

            System.Drawing.Imaging.ImageFormat format = image.RawFormat;

            // put the image into the memory stream
            thumbnailImage.Save(imageStream, format);
           
            // make byte array the same size as the image
            byte[] imageContent = new Byte[imageStream.Length];

            // rewind the memory stream
            imageStream.Position = 0;

            // load the byte array with the image
            imageStream.Read(imageContent, 0, (int)imageStream.Length);

            string contentType = "";

            switch (format.Guid.ToString()) {
                case "b96b3cb0-0728-11d3-9d7b-0000f81ef32e":
                    contentType = "image/gif";
                    break;
                case "b96b3cae-0728-11d3-9d7b-0000f81ef32e":
                    contentType = "image/jpeg";
                    break;
                case "b96b3caf-0728-11d3-9d7b-0000f81ef32e":
                    contentType = "image/png";
                    break;
                case "b96b3cab-0728-11d3-9d7b-0000f81ef32e":
                    contentType = "image/bmp";
                    break;
                default:
                    contentType = "image/jpeg";
                    break;
            }
           
            // return byte array to caller with image type
            Response.ContentType = contentType;
            Response.BinaryWrite(imageContent);

Kan du lede mig i retning af hvad det er jeg kan gøre ?
Avatar billede trumf Nybegynder
01. oktober 2006 - 22:28 #3
Jeg har nu omskrevet ovenstående og delt det op i to funktioner:

if (getContentType(image) == "image/gif")
                makeGifThumpnail(file, Convert.ToInt16(imgWidth), Convert.ToInt16(imgHeight));
            else
                makeThumbnail(image, Convert.ToInt16(imgWidth), Convert.ToInt16(imgHeight));

Jeg har læst lidt om drawimage men kan ikke lige få det til at køre...

        private void makeGifThumpnail(string file, int imgWidth, int imgHeight)
        {
            Bitmap bitmap = new Bitmap(file);

            // Create rectangle for displaying image.
            Rectangle destRect = new Rectangle(0, 0, imgWidth, imgHeight);

            // Draw image to screen.
            //e.Graphics.DrawImage(bitmap, destRect);
        }
Avatar billede hacked Nybegynder
01. oktober 2006 - 22:33 #4
Det er muligt at det her kan hjælpe mht. gif:

http://www.c-sharpcorner.com/Code/2003/March/ThumbnailImages.asp
Avatar billede trumf Nybegynder
26. oktober 2006 - 21:17 #5
hejsa malkor

undskyld jeg har været så længe om at svare...

jeg er desværre ikke god nok til at gennemskue hele den kode, og der er måske også lidt voldsomt at starte forfra når jeg nu har næsten det hele, hvis du kan følge mig.

Jeg ville sætte pris på hjælp til bare at få makeGifThumpnail til at fungere.

På forhånd tak :)
Avatar billede trumf Nybegynder
31. oktober 2006 - 12:41 #6
Ville nogen blive ked af det hvis jeg lukke de denne og oprettede en ny der spurgte lidt mere specifikt
Avatar billede hacked Nybegynder
31. oktober 2006 - 13:27 #7
Næ :) Det går nok. Go4it
Avatar billede trumf Nybegynder
24. november 2006 - 09:25 #8
Jeg har lavet et nyt spm her http://www.eksperten.dk/spm/746791

Driis lægger du et svar, da du trods alt fik mig over på den med DrawImage, så deler vi i porten.

I er begge meget velkomne til at hjælpe med på det nye spm. Jeg takker for indsatsen her Malkor og Driis :)
Avatar billede driis Nybegynder
24. november 2006 - 19:30 #9
Så lægger jeg da et svar ;-)
Avatar billede trumf Nybegynder
24. november 2006 - 19:38 #10
Det kom til at virke storartet, som det kan ses i det nye spm.

Tak endnu engang :)
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