Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从XML中的十六进制字符串获取JPEG图像_C#_Xml_Image - Fatal编程技术网

C# 从XML中的十六进制字符串获取JPEG图像

C# 从XML中的十六进制字符串获取JPEG图像,c#,xml,image,C#,Xml,Image,好了,我正在尝试收集一张在xml文件中编码为十六进制字符串的图片。我一直在寻找这个问题的答案,但在任何地方都找不到。 这是我现在拥有的 byte[] bytes = Convert.FromBase64String(FilterResults("PHOTOGRAPH")); MemoryStream mem = new MemoryStream(bytes); Image bmp2 = Image.FromStream(mem); return bmp2; FilterResults函数只

好了,我正在尝试收集一张在xml文件中编码为十六进制字符串的图片。我一直在寻找这个问题的答案,但在任何地方都找不到。 这是我现在拥有的

byte[] bytes = Convert.FromBase64String(FilterResults("PHOTOGRAPH"));
MemoryStream mem = new MemoryStream(bytes);
Image bmp2 = Image.FromStream(mem);

return bmp2; 
FilterResults函数只返回XML中的字符串。 我能够获取字符串并将其转换为字节[],但一旦执行Image.FromStream(mem),我就会得到一个“参数不正确”错误


有什么想法吗?

代码片段是正确的(尽管
MemoryStream
实现了
IDisposable
,因此应该使用
块包装在
中)

仅当无法识别流中的图像格式时,才会抛出
ArgumentException
。因此,除非有一些代码没有显示,否则问题就在于图像本身

为了使自己确信代码是正确的,请对硬盘上某个位置的实际图像文件使用以下测试程序:

string imageBase64;
using (Image image = Image.FromFile(@"C:\path_to_image.jpg"))
{
    using (MemoryStream ms = new MemoryStream())
    {
        image.Save(ms, ImageFormat.Jpeg);
        imageBase64 = Convert.ToBase64String(ms.ToArray());
    }
}
Console.WriteLine(imageBase64.Length);

byte[] imageData = Convert.FromBase64String(imageBase64);
using (MemoryStream ms = new MemoryStream(imageData))
{
    using (Image image = Image.FromStream(ms))
    {
        Console.WriteLine(image.Width);
    }
}

假设FilterResults正确返回字符串(这可能是因为如果它不是有效的base64,FromBase64String将引发异常),我看不出您的代码有任何错误。您确定数据实际上是JPEG图像吗?你能把XML文件上传到某个地方吗?它只是没有编码为包含图像头的图像。发布您看到的前8个字节的值。以下是来自文档/数据块ffd8ffe0的前8个字节