Avatar billede ncp Nybegynder
09. april 2004 - 18:05 Der er 6 kommentarer og
1 løsning

Loade png ind over billede og bibehold alpha

Er det muligt, at efter en bruger har uploadet f.eks. et jpg-billede, at loade et png-billede ind over dette, og bebeholde png-billedets alpha-channels?
Avatar billede burningice Nybegynder
12. april 2004 - 22:06 #1
hvad sker der når du tegner dit png-billede over jpg-billedet ved hjælp af Image og Graphics-klasserne? du er sikker på at funktionaliteten ikke allerede er indbygget i .Net?
Avatar billede ncp Nybegynder
12. april 2004 - 23:01 #2
Nej, er ikke sikker på noget :-) - er ikke så meget inde i .Net endnu...

I så fald, hvordan skulle dette gøres ?
Avatar billede burningice Nybegynder
12. april 2004 - 23:33 #3
Bitmap image = new Bitmap(Image.FromFile("dinfil.jpg"));
Graphics g = Graphics.FromImage(image);

Bitmap image2 = new Bitmap(Image.FromFile("dinfil.png"));
g.DrawImageUnscaled(image2, x, y);
image2.Dispose();
Avatar billede ncp Nybegynder
13. april 2004 - 18:50 #4
Skrev det lige om til VB - og det virker perfekt!

        Dim pic As New System.Drawing.Bitmap(474, 184)
        Dim overlay As New System.Drawing.Bitmap(474, 184)
        Dim g As Graphics = Graphics.FromImage(pic)

        pic = New Bitmap(Image.FromFile("E:\Gamersplace.dk\WebApplication1\1.jpg"))
        g = Graphics.FromImage(pic)

        overlay = New Bitmap(Image.FromFile("E:\Gamersplace.dk\WebApplication1\spotoverlay.png"))
        g.DrawImageUnscaled(overlay, 0, 0)

        overlay.Dispose()

        pic.Save("E:\Gamersplace.dk\WebApplication1\test.jpg", ImageFormat.Jpeg)

        pic.Dispose()

Har virkelig fået øjene op med .NET - det er jo helt ufatteligt hvad man kan! Selv med AspImage, ville man jo ikke have kunne arbejde med png's alpha-channels i ASP - mange tak! (smid et svar ;)
Avatar billede burningice Nybegynder
13. april 2004 - 18:59 #5
:) det var da så lidt... ja, .Net er ikke så ringe endda... der må virkelig sidde nogle kodehoveder bag der har hygget sig
Avatar billede burningice Nybegynder
13. april 2004 - 19:03 #6
... og, det var det svar :)
Avatar billede burningice Nybegynder
13. april 2004 - 19:06 #7
Der er forresten nogle fejl i din kode... du starter med at instantiere to Bitmap-objecter, og sætter dem til pic og overlay. Senere i koden opretter du to nye som bliver tildelt de samme to variabler, altså går de to første bitmap-objecter du lavede tabt, og fylder i hukommelsen indtil de bliver fjernet af GC'en. Sååe:

        Dim pic As New Bitmap(Image.FromFile("E:\Gamersplace.dk\WebApplication1\1.jpg"))
        Dim overlay As New Bitmap(Image.FromFile("E:\Gamersplace.dk\WebApplication1\spotoverlay.png"))

        Dim g As Graphics = Graphics.FromImage(pic)
        g.DrawImageUnscaled(overlay, 0, 0)

        overlay.Dispose()

        pic.Save("E:\Gamersplace.dk\WebApplication1\test.jpg", ImageFormat.Jpeg)

        pic.Dispose()
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