Convertir une chaîne en bitmap en c #

Je veux convertir une chaîne en bitmap ou quelque chose que je peux afficher dans un pixelbox.

Ma chaîne ressemble à ceci:

ssortingng rxssortingng = "010010010020020020030030030040040040050050050060060060070070070080080080090090090100100100110110110120120120130130130140140140150150150160160160“ 

Ce n’est pas un problème pour effacer le code RVB dans la chaîne

 ("01002003004005060070080090100110120130140150160"); 

J’en ai seulement besoin pour montrer, ce n’est pas important [sic]

IDE: VS2010 C #

En poursuivant l’examen, j’ai compris que la chaîne que vous obtenez n’est pas un tableau d’octets. Cela crée un bitmap carré et vous permet de définir les valeurs pixel par pixel.

 List splitBytes = new List(); ssortingng byteSsortingng = ""; foreach (var chr in rsssortingng) { byteSsortingng += chr; if (byteSsortingng.Length == 3) { splitBytes.Add(byteSsortingng); byteSsortingng = ""; } } var pixelCount = splitBytes.Count / 3; var numRows = pixelCount / 4; var numCols = pixelCount / 4; System.Drawing.Bitmap map = new System.Drawing.Bitmap(numRows, numCols); var curPixel = 0; for (int y = 0; y < numCols; y++) { for (int x = 0; x < numRows; x++ ) { map.SetPixel(x, y, System.Drawing.Color.FromArgb( Convert.ToInt32(splitBytes[curPixel * 3]), Convert.ToInt32(splitBytes[curPixel * 3 + 1]), Convert.ToInt32(splitBytes[curPixel * 3 + 2]))); curPixel++; } } //Do something with image 

EDIT: Corrections apscopes aux itérations ligne / col pour correspondre à l’image montrée ci-dessus.

Je crains que les données que vous obtenez ne soient pas une image significative. Si vous divisez les données en groupes de trois. Vous obtenez ce qui suit:

 010 010 010 020 020 020 030 030 030 040 040 040 050 050 050 060 060 060 070 070 070 080 080 080 090 090 090 100 100 100 110 110 110 120 120 120 130 130 130 140 140 140 150 150 150 160 160 160 

Si vous regardez ces données, vous ne pouvez absolument pas convertir cela en une image qui aurait une signification pour nous. Ce serait une collection de 48 pixels. Contenant une sorte de dégradé semblable à une image (puisque les nombres ci-dessous suivent un motif qui augmente constamment

Nous aurions besoin de plus d’informations pour résoudre ce problème. (Comme quel composant fournit les données, etc.)

Mise à jour C’est ce que j’obtiens lorsque je convertis vos données en pixels (compte tenu du fait que j’ai agrandi chaque pixel à 16×16)

Résultat lors de l'assemblage des données

Essayez de convertir la chaîne en un tableau d’octets et de la charger dans un stream de mémoire. Une fois dans le stream, vous devriez pouvoir convertir en une image.

 List splitBytes = new List(); ssortingng byteSsortingng = ""; foreach (var chr in testSsortingng) { byteSsortingng += chr; if (byteSsortingng.Length == 3) { splitBytes.Add(Convert.ToByte(byteSsortingng)); byteSsortingng = ""; } } if (byteSsortingng != "") splitBytes.AddRange(Encoding.ASCII.GetBytes(byteSsortingng)); using (var ms = new MemoryStream(splitBytes.ToArray())) { var img = System.Drawing.Image.FromStream(ms); //do something with image. } 

EDIT: Ajout du code mis à jour. Cela a été testé en chargeant une image de mon choix et en convertissant les octets en chaîne, puis en les reconvertissant en tableau d’octets à l’aide du code ci-dessus et j’ai chargé avec succès l’image à partir d’une chaîne.

 ssortingng testSsortingng = ""; 

EDIT: Ajout d’un exemple de chaîne de l’image que j’ai utilisée pour tester le code ci-dessus.