Avatar billede everclear Praktikant
25. juli 2010 - 22:17 Der er 7 kommentarer og
1 løsning

Problemer med transparens og skalering

Jeg har en HttpHandler, der kan skalere et billede - meget simpelt i bund og grund. Mit problem ligger i, at hvis jeg kalder denne med en png-fil med transparens i, så får jeg ikke transparens, men derimod sort farve.

Jeg har set det mange stedet på nettet forskellige steder, men hvordan får jeg det lige fixet?

Jeg tror det er i den del her det går galt:

using (Graphics canvas = Graphics.FromImage(newImage))
{
    canvas.SmoothingMode = SmoothingMode.AntiAlias;
    canvas.InterpolationMode =                      InterpolationMode.HighQualityBicubic;

    canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
    canvas.CompositingQuality = CompositingQuality.HighQuality;
    canvas.CompositingMode = CompositingMode.SourceOver;

    canvas.DrawImage(oldImage, new Rectangle(new Point(0, 0), newSize));

using (System.Drawing.Imaging.ImageAttributes scalingAtt = new System.Drawing.Imaging.ImageAttributes())
{
    scalingAtt.SetWrapMode(WrapMode.TileFlipXY);
    canvas.DrawImage(oldImage, new Rectangle(0, 0, newSize.Width, newSize.Height), 0, 0, oldImage.Width, oldImage.Height, GraphicsUnit.Pixel, scalingAtt);
}

if (drawBorder)
{
    // Draw border Rectangle
    //Pen solidPen = new Pen(Color.Black);
    Pen transPen = new Pen(Color.FromArgb(alpha, 0, 0, 0), 1);
    canvas.DrawRectangle(transPen, 0, 0, (width - 1), (height - 1));
}

string ext = Tools.FileUtility.GetExtension(fileName);
                    switch (ext.ToLower())
                    {
                        case ".jpg":
                            newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                            break;
                        case ".png":
                            newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Png);
                            break;
                        case ".gif":
                            newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Gif);
                            break;
                        default:
                            newImage.Save(cachedFileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                            break;
                    }         
}


Jeg tror det er en simpel simpel ting, der går galt, men det her GDI noget er ikke lige min kop te :)
Avatar billede Syska Mester
26. juli 2010 - 02:43 #1
Kan du ikke bare gøre som du andre? eller det er måske ikke det du har set ?
Avatar billede everclear Praktikant
26. juli 2010 - 09:12 #2
Det er ikke koden jeg har set andre steder - det er problemet med, at transparens bliver vist som sort farve :)
Avatar billede Syska Mester
26. juli 2010 - 14:47 #3
ahhh, my bad.

Så er jeg blank, men der findes sikkert 3parts .NET Libraries som kan gøre hvad du vil og sikkert på en bedre og hurtigere måde. De har måske fikset sådanne fejl ... men kun et bud på hvor jeg ville lede efter en løsning.

mvh
Avatar billede Syska Mester
26. juli 2010 - 14:48 #4
http://webimageresizer.codeplex.com/

Eventuelt prøv denne ... codeplex har faktisk en del ting.

mvh
Avatar billede everclear Praktikant
26. juli 2010 - 14:52 #5
Lige præcis den der har jeg haft prøvet - virker rigtig godt - den laver dog en border rundt omkring alle billeder som man ikke kan slå fra som parameter :S

Jeg tænkte mere, at hvis jeg blot manglede én enkelt linie et eller andet sted, så ville det være noget nemmere at rette mit eget til :)
Avatar billede Syska Mester
26. juli 2010 - 14:59 #6
Ja, det er vel bare at download det og kigge source koden igennem :-)

På den måde kan du jo også gøre sådan at border er slået fra per default, men kan slås til via en parameter.

og ja, så kan du jo commit din kode du laver til hans projekt. Jeg ville da også synes det er mærkeligt med en border, hvis jeg skal være ærlig, så kan ikke forstå det er default.

mvh
Avatar billede everclear Praktikant
27. juli 2010 - 15:33 #7
Efter rigtig mange timers forsøg fandt jeg nu rent faktisk en måde at løse dette på - uden brug af diverse 3. parts-elementer.

Tak for sparringen alligevel buzzzz :)

Tråden lukkes.
Avatar billede Syska Mester
28. juli 2010 - 22:25 #8
Hvad var løsningen ?
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