Avatar billede 123maka Nybegynder
12. juli 2009 - 18:45 Der er 2 kommentarer og
1 løsning

Billede i et bytearray

Hej!

Jeg har brug for at sammenligne to billeder pixel for pixel. Jeg har læst mig frem til at man kan putte et billede i et bytearray og har fået konstruet følgende kode:

public static byte[] ImageToByte(Image img)
        {
            byte[] byteArray = new byte[0];
            using (MemoryStream stream = new MemoryStream())
            {
                img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                stream.Close();

                byteArray = stream.ToArray();
            }
            return byteArray;
        }

Og det duer ikke til mit brug. Et 2x2 png billede skaber et array på lidt over 100 entries.

Jeg kunne godt tænkte mig et 2d array med farver. Så har vi en 2x2 billede som ser sådan her ud:
[#][_]
[_][#]

Underscore = hvid
Firkant = sort

Så vil jeg gerne gemme den i et array således:
{
{#000,#fff},
{#fff,#000},
}

Om det er hex, tal, eller bogstaver der repræsenterer pixels er ligemeget. Typen af billedet er også ligemeget, dvs. jeg kan leve med at metoden kun tager imod jpg eller png filer.

Nogen der ved hvordan man gør dette?
Avatar billede arne_v Ekspert
12. juli 2009 - 20:03 #1
Den ekstra størrelse er vel header information. Hvis du skipper størrelsen på headeren bør du have de rå data.
Avatar billede Spotgun Seniormester
12. juli 2009 - 20:05 #2
Hvis du bare vil have et 2d array med farver, så prøv det her:

                Bitmap b = new Bitmap(Bitmap.FromFile("din_fil.jpg"));
                Color[,] imgArray = new Color[b.Width, b.Height];
                for (int y = 0; y < b.Height; y++)
                {
                    for (int x = 0; x < b.Width; x++)
                    {
                        imgArray[x, y] = b.GetPixel(x, y);
                    }
                }
            }
Avatar billede 123maka Nybegynder
15. juli 2009 - 13:32 #3
Perfekt! Det var lige det jeg søgte. Tak!
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

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