Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
串行摄像机的JPEG图像未加载C#位图图像_C#_Wpf_Jpeg - Fatal编程技术网

串行摄像机的JPEG图像未加载C#位图图像

串行摄像机的JPEG图像未加载C#位图图像,c#,wpf,jpeg,C#,Wpf,Jpeg,我正在写一个程序,它从通过串行端口连接的相机中获取JPEG图像。我想以编程方式在WPF中定义一个图像,以便在检索后使用image的Source属性显示它 我发现 image1.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + @"/" + photo + ".jpg")); 对于大多数图像,它都工作得非常好,但由于某些原因,它不喜欢来自此相机的图像。谁能比我更了解JPEG,请看一看,看看为什么它可能是一个问题 编辑

我正在写一个程序,它从通过串行端口连接的相机中获取JPEG图像。我想以编程方式在WPF中定义一个图像,以便在检索后使用image的Source属性显示它

我发现

image1.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + @"/" + photo + ".jpg"));
对于大多数图像,它都工作得非常好,但由于某些原因,它不喜欢来自此相机的图像。谁能比我更了解JPEG,请看一看,看看为什么它可能是一个问题

编辑:经过一些调查,我确定WPF/C不喜欢的可能是JFIF头数据。有什么简单的方法可以在程序中更正它吗

编辑2:我相信我已经找到了问题所在。相机的JFIF头数据完全是垃圾。基本上只有0-10。。。最后不得不用十六进制编辑器来阅读。我从工作文件中复制了整个JFIF头,现在一切正常。我想,只要在每个标题出现时对其进行编辑就行了

有关使用此摄像头遇到此问题的任何人的信息:

它似乎在每张照片上都给出了相同的垃圾标题信息:

FF D8 FF E0 00 11 4A 46 49 46 00 01 02 04 05 06 07 08 09 0A FF DB

而且没有一个符合JFIF标准:

如果您只是将JFIF头替换为:

FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 60 00 FF DB

它会起作用的。只需读取文件,直到“FF DB”也在垃圾头中-它似乎是头的“停止字”-然后将其换掉


还有第二批似乎是标题信息,一直持续到字节26E。。。我在这里看到的两张图片似乎都一样,但这似乎不是C#加载问题的原因。它在JFIF中看起来与任何东西都不一样,所以我不确定。

很抱歉,我认为此映像“已损坏”。我认为保存此映像的映像流未正确关闭/处理。我在XAML中加载了图像,并得到错误:

来自HRESULT的异常:0x88982F72


然后我在Paint/Photoshop中打开图像并重新保存。我在XAML中打开了重新保存的图像,没有错误。看起来Photoshop读得很好,当它正确保存时,我很抱歉,但我认为此图像“已损坏”。我认为保存此图像的图像流未正确关闭/处理。我在XAML中加载了图像,并得到错误:

来自HRESULT的异常:0x88982F72


然后我在Paint/Photoshop中打开图像并重新保存。我在XAML中打开了重新保存的图像,没有错误。看起来Photoshop可以很好地阅读它,并且当它正确地保存它时

关于如何找出它以何种方式损坏的提示?我可能知道这很糟糕,但我不知道是我的程序还是相机出了问题。我确实注意到,使用Paint保存后,图像的大小增加了一倍,从20KB增加到了41KB。请将图像打开到字节[],然后删除标题。这不是应该做的。如果可以的话,你真的应该修复来源(相机)。除了给制造商发电子邮件之外,我真的没什么可做的了。。。问题是PCB上的JPEG编码器IC…哦,也是。我已经用某种解决方案更新了我的OP。。。就这样吧。至少这给了我一些东西放在我的论文里。关于如何找出它是以什么方式腐败的,有什么建议吗?我可能知道这很糟糕,但我不知道是我的程序还是相机出了问题。我确实注意到,使用Paint保存后,图像的大小增加了一倍,从20KB增加到了41KB。请将图像打开到字节[],然后删除标题。这不是应该做的。如果可以的话,你真的应该修复来源(相机)。除了给制造商发电子邮件之外,我真的没什么可做的了。。。问题是PCB上的JPEG编码器IC…哦,也是。我已经用某种解决方案更新了我的OP。。。就这样吧。至少这给了我写论文的机会。