在c#中将字符串转换为位图

我想将字符串转换为位图或我可以在像素框中显示的内容。

我的字符串看起来像这样:

string rxstring = "010010010020020020030030030040040040050050050060060060070070070080080080090090090100100100110110110120120120130130130140140140150150150160160160“ 

擦除字符串中的RGB代码没有问题

 ("01002003004005060070080090100110120130140150160"); 

我只需要它来表明,这并不重要[原文如此]

IDE:VS2010 C#

继续审查后,我意识到你得到的字符串不是字节数组。 这将创建一个方形位图,并允许您逐个像素地设置值。

 List splitBytes = new List(); string byteString = ""; foreach (var chr in rsstring) { byteString += chr; if (byteString.Length == 3) { splitBytes.Add(byteString); byteString = ""; } } 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 

编辑:对行/列迭代进行校正以匹配上面显示的图像。

我担心你得到的数据不是一个有意义的形象。 如果将数据拆分为三个组。 你得到以下:

 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 

如果您查看该数据,则无法将此转换为对我们来说实际意味着什么的图像。 它将是48像素的集合。 包含一种类似图像的渐变(因为下面的数字遵循不断增加的模式。

我们需要更多信息来调试它。 (就像提供数据的组件一样)

更新这是我将数据转换为像素时得到的结果(考虑到我将每个像素放大到16×16)

组装数据时的结果

尝试将字符串转换为字节数组并将其加载到内存流中。 进入流后,您应该能够转换为图像。

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

编辑:添加更新的代码。 这是通过加载我自己的图像并将字节转换为字符串,然后使用上面的代码将它们转换回字节数组来测试的,并且我成功地从字符串加载了图像。

 string testString = ""; 

编辑:添加了我用于测试上述代码的图像的示例字符串。