Former une image a partir d'un tableau de pixel

Ednord12 - 2 janv. 2017 à 18:24
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 6 janv. 2017 à 23:48
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

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
2 janv. 2017 à 19:03
0
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");
}
0
une erreur de "parametre incorrect" au niveau de:
Image image = Image.FromStream(ms);
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
3 janv. 2017 à 11:45
bonjour
Et en allant voir "Image.FromStream c#" sur Google cela donne quoi ?
0
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
6 janv. 2017 à 21:05
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.
0
Merci pour ton code. Ca m'as vraiment aider.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
6 janv. 2017 à 23:48
Dans ce cas, passe le sujet résolu en cliquant sur le lien Marquer Comme Résolu sous le titre de la discussion
0
Rejoignez-nous