Avatar billede stephanryer Nybegynder
14. december 2005 - 13:47 Der er 11 kommentarer og
1 løsning

Udtage sub-image / del af et Bitmap

Hvad jeg vil:

Jeg vil vha. at Bitmap gerne vide hvordan jeg tage et sub-image af dette, dvs. tager noget af billedet og ender med at have det som et nyt Bitmap.

På forhånd tak.
Avatar billede dr_chaos Nybegynder
14. december 2005 - 14:06 #1
du kan bruge noget i denne stil:

            Bitmap b = new Bitmap("c:\\winxp.gif");
            Bitmap btest = new Bitmap("c:\\winxp.gif");
            btest = b.Clone(new Rectangle(0, 0, 30, 40), PixelFormat.DontCare);
            btest.Save("c:\\winxplille.gif");

i new Rectangle(0, 0, 30, 40) defineres start på x og y og højde og bredde på det nye billede.
Avatar billede stephanryer Nybegynder
14. december 2005 - 14:48 #2
Hmmm har lige prøvet den af:

    private Bitmap GetSquare(Bitmap b) {
        int w = b.Width;
        int h = b.Height;
        if (w < h)
        {
        return b.Clone(new Rectangle(0, (h - w) / 2, w, w), PixelFormat.DontCare);
        }
        else {
        return b.Clone(new Rectangle(0, (w - h) / 2, h, h), PixelFormat.DontCare);
        }
    }

Men jeg får en Syste.OutOfMemoryException.

Billedet jeg prøver at klone er 360x260 og fylder 11kb som jpg på disken. Nogen ide om hvorfor den siger der mangler memory?
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:11 #3
fejlen kommer fra dit rectangel fordi du forsøger at skære et billede ud af et område der ikke eksisterer.
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:12 #4
hvor meget af billedet er det du vil have vist ?
Avatar billede stephanryer Nybegynder
14. december 2005 - 15:14 #5
Jeg vil have den størst mulig kvadrat af et raktangulært billede.
Avatar billede stephanryer Nybegynder
14. december 2005 - 15:14 #6
mulige*, rektangulært* :)
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:16 #7
skal det starte i toppen af venstre hjørne ?
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:21 #8
prøv med

private Bitmap GetSquare(Bitmap b)
        {
            int w = b.Width;
            int h = b.Height;
            if (w < h)
            {
                return b.Clone(new Rectangle(0, 0, w, w), b.PixelFormat);
            }
            else
            {
                return b.Clone(new Rectangle(0, 0, h, h), b.PixelFormat);
            }
        }
Avatar billede stephanryer Nybegynder
14. december 2005 - 15:23 #9
problemet er at jeg gerne vil have kvadratet placeret på midten af billedet.
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:29 #10
prøv med

private Bitmap GetSquare(Bitmap b)
        {
            int w = b.Width;
            int h = b.Height;
            if (w < h)
            {
                return b.Clone(new Rectangle(0, (w - h) / 2, w, w), b.PixelFormat);
            }
            else
            {
                return b.Clone(new Rectangle((w - h) / 2, 0, h, h), b.PixelFormat);
            }
        }
Avatar billede stephanryer Nybegynder
14. december 2005 - 15:34 #11
ja :) Tak for det. Kan godt se den dumme fejl nu. Læg et svar og få point.
Avatar billede dr_chaos Nybegynder
14. december 2005 - 15:36 #12
np :)
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