Former une image a partir d'un tableau de pixel

Signaler
-
Whismeril
Messages postés
14252
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
-
Bonjour,
je suis un débutant en c#. Actuellement je bug sur un code depuis un moment. Quelq'un pourrais me dire comment former (constituer) une image a partir d'un tableau contenant les pixels de chaque coordonné xy?
Merci et heureuse année 2017

6 réponses

Messages postés
14252
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
343
Merci pour la réponse. Cependant J'obtient une erreur en voulant manuellemant passer un tableau de byte dans la memorystream.
byte[] imageData1= new byte[] {
239, 1, 255, 255, 255, 255, 2, 1, 2, 3, 1, 101, 22, 0, 0, 248, 14, 240, 6, 224, 2, 192, 2, 192, 2, 192, 2, 192, 2, 128, 2, 128, 2, 128, 2, 128, 2, 128, 2, 128, 2, 0, 2, 128, 2, 128, 6, 192, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 29, 170, 30, 70, 165, 148, 254, 44, 167, 236, 62, 105, 44, 147, 254, 81, 47, 42, 126, 39, 48, 149, 254, 65, 49, 84, 62, 52, 55, 234, 254, 34, 58, 20, 222, 42, 63, 83, 222, 92, 140, 167, 95, 38, 31, 86, 191, 31, 167, 86, 159, 76, 57, 212, 63, 78, 152, 42, 252, 18, 161, 192, 124, 18, 168, 44, 156, 90, 146, 41, 58, 85, 152, 149, 26, 17, 36, 218, 114, 87, 16, 20, 56, 16, 64, 172, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 70, 239, 1, 255, 255, 255, 255, 8, 1, 2, 3, 1, 96, 29, 0, 0, 249, 254, 224, 14, 224, 6, 192, 6, 192, 2, 192, 2, 128, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 128, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 141, 231, 190, 63, 25, 236, 126, 73, 32, 42, 126, 54, 39, 213, 126, 88, 47, 84, 30, 64, 49, 106, 222, 23, 178, 86, 62, 47, 179, 84, 62, 30, 186, 43, 94, 101, 187, 19, 30, 48, 187, 172, 254, 71, 153, 149, 31, 22, 160, 215, 63, 14, 168, 214, 183, 25, 168, 236, 63, 61, 62, 149, 191, 42, 194, 171, 223, 100, 51, 170, 124, 54, 195, 43, 125, 36, 143, 192, 210, 41, 16, 23, 82, 102, 54, 211, 186, 52, 192, 20, 219, 104, 168, 169, 152, 73, 20, 41, 217, 101, 39, 212, 57, 73, 146, 20, 118, 15, 60, 84, 50, 24, 65, 83, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};


using (var ms = new MemoryStream(imageData1))
{
Image image = Image.FromStream(ms);
image.Save(@"E:\newImage.jpg");
}
une erreur de "parametre incorrect" au niveau de:
Image image = Image.FromStream(ms);
vb95
Messages postés
2076
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 février 2020
86
bonjour
Et en allant voir "Image.FromStream c#" sur Google cela donne quoi ?
j'ai constaté que c'est le tableau de byte que je donne en paramètre qui génère l'erreur. J'ai lu quelque part que son format ne respect pas celle d'une image . mais c'est ce que le lecteur m'a donné comme template que je lui ai fournis.
SVP aider moi . Je me perd.
Messages postés
14252
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
343
Bonsoir

en me servant de ton example, et en supposant que ton image fait 16*43 (y'a 688 bytes dans ton tableau) en niveau de gris, voilà ce que j'ai écrit.
            int[] imageData1 = new int[] { 239, 1, 255, 255, 255, 255, 2, 1, 2, 3, 1, 101, 22, 0, 0, 248, 14, 240, 6, 224, 2, 192, 2, 192, 2, 192, 2, 192, 2, 128, 2, 128, 2, 128, 2, 128, 2, 128, 2, 128, 2, 0, 2, 128, 2, 128, 6, 192, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 29, 170, 30, 70, 165, 148, 254, 44, 167, 236, 62, 105, 44, 147, 254, 81, 47, 42, 126, 39, 48, 149, 254, 65, 49, 84, 62, 52, 55, 234, 254, 34, 58, 20, 222, 42, 63, 83, 222, 92, 140, 167, 95, 38, 31, 86, 191, 31, 167, 86, 159, 76, 57, 212, 63, 78, 152, 42, 252, 18, 161, 192, 124, 18, 168, 44, 156, 90, 146, 41, 58, 85, 152, 149, 26, 17, 36, 218, 114, 87, 16, 20, 56, 16, 64, 172, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 70, 239, 1, 255, 255, 255, 255, 8, 1, 2, 3, 1, 96, 29, 0, 0, 249, 254, 224, 14, 224, 6, 192, 6, 192, 2, 192, 2, 128, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 6, 128, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 141, 231, 190, 63, 25, 236, 126, 73, 32, 42, 126, 54, 39, 213, 126, 88, 47, 84, 30, 64, 49, 106, 222, 23, 178, 86, 62, 47, 179, 84, 62, 30, 186, 43, 94, 101, 187, 19, 30, 48, 187, 172, 254, 71, 153, 149, 31, 22, 160, 215, 63, 14, 168, 214, 183, 25, 168, 236, 63, 61, 62, 149, 191, 42, 194, 171, 223, 100, 51, 170, 124, 54, 195, 43, 125, 36, 143, 192, 210, 41, 16, 23, 82, 102, 54, 211, 186, 52, 192, 20, 219, 104, 168, 169, 152, 73, 20, 41, 217, 101, 39, 212, 57, 73, 146, 20, 118, 15, 60, 84, 50, 24, 65, 83, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
            Bitmap bmp = new Bitmap(16, 43);
            
            for(int i = 0; i<16; i++)
                for(int j = 0; j < 43; j++)
                {
                    int index = 16 * j + i; //pour trouver le pixel dans le tableau en ligne
                    Color couleur = Color.FromArgb(imageData1[index], imageData1[index], imageData1[index]);
                    bmp.SetPixel(i, j, couleur);
                }

            bmp.Save(@"c:\temp\toto.png", ImageFormat.Png);


Par contre ça donne une image qui ne ressemble à rien.
Merci pour ton code. Ca m'as vraiment aider.
Whismeril
Messages postés
14252
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 février 2020
343
Dans ce cas, passe le sujet résolu en cliquant sur le lien Marquer Comme Résolu sous le titre de la discussion