0

我在 PictureBox 控件中加载图像“字符串”时遇到问题。我找不到充电的方法,也不知道是否可以这样做。我尝试了以下代码,但没有成功:

第一

变量_= "0x89504E470D0A1A0A0000000D49484452000000900000005B0802000000130B9B9 ";

图片.Image = Base64ToImage( s );

静态图像 Base64ToImage(string base64String)

{

     byte[] imageBytes = Convert.FromBase64String(base64String);
    MemoryStream ms = new MemoryStream(imageBytes);
   return Image.FromStream(ms, true);

}

谁能帮忙!?

4

2 回答 2

2

如果解码正确,这似乎是一个红色矩形 91*144。

  1. 从字符串中删除 0x 和空格。

  2. 将字符串转换为字节 [] - 我使用了 CainKellye 在 StackOverFlow 上找到的转换器(如何将十六进制字符串转换为字节数组?

字符串 s = "";

byte[] imageBytes = StringToByteArrayFastest(s);

MemoryStream ms = new MemoryStream(imageBytes);

Bitmap bmp = (Bitmap)Image.FromStream(ms);

pictureBox1.Image = bmp; 
  1. 结果是:在此处输入图像描述
于 2013-08-23T08:47:06.403 回答
0

我不认为s它是一个 64 进制的字符串,它看起来更像是十六进制 - 它甚至还在它0x前面,并且“数字”不高于 F。你绝对应该删除0x前面的。要获取 base 64 字符串,您可以使用本网站的代码(我尚未测试过):

public static string ConvertHexStringToBase64(string hexString)
{
    if (hexString.Length % 2 > 0)
        throw new FormatException("Input string was not in a correct format.");
    if (Regex.Match(hexString, "[^a-fA-F0-9]").Success == true)
        throw new FormatException("Input string was not in a correct format.");
    byte[] buffer = new byte[hexString.Length / 2];
    int i=0;
    while (i < hexString.Length) {
        buffer[i / 2] = byte.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
        i += 2;
    }
return Convert.ToBase64String(buffer);
}
于 2013-08-22T17:45:37.493 回答