Former une image a partir d'un tableau de pixel

- - Dernière réponse : Whismeril
Messages postés
12410
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
- 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
Afficher la suite 

Votre réponse

6 réponses

Messages postés
12410
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
Commenter la réponse de Whismeril
0
Merci
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");
}
Commenter la réponse de Ednord12
0
Merci
une erreur de "parametre incorrect" au niveau de:
Image image = Image.FromStream(ms);
vb95
Messages postés
1730
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 décembre 2018
-
bonjour
Et en allant voir "Image.FromStream c#" sur Google cela donne quoi ?
Commenter la réponse de Ednord12
0
Merci
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.
Commenter la réponse de Ednord12
Messages postés
12410
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
0
Merci
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.
Commenter la réponse de Whismeril
0
Merci
Merci pour ton code. Ca m'as vraiment aider.
Whismeril
Messages postés
12410
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 décembre 2018
-
Dans ce cas, passe le sujet résolu en cliquant sur le lien Marquer Comme Résolu sous le titre de la discussion
Commenter la réponse de Ednord12

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.