Изображение JPEG с последовательной камеры не загружается с C # BitmapImage - PullRequest
1 голос
/ 29 февраля 2012

Я пишу программу, которая захватывает изображения JPEG с камеры, подключенной через последовательный порт.Я хочу программно определить изображение в WPF, чтобы отобразить его после его получения, используя атрибут Source для Image.

Я обнаружил, что

image1.Source = new BitmapImage(new Uri(Environment.CurrentDirectory + @"/" + photo + ".jpg"));

Работает абсолютно нормальнос большинством изображений, но по какой-то причине ему не нравятся изображения с этой камеры.Может ли кто-нибудь, кто знает больше, чем я, о JPEG, пожалуйста, посмотрите на него и посмотрите, почему это может быть проблемой?

http://dl.dropbox.com/u/2434899/0%20%282%29.jpg

РЕДАКТИРОВАТЬ: После некоторого исследования я определил, что этоэто, вероятно, данные заголовка JFIF, которые не нравятся WPF / C #.Есть ли простой способ исправить это в программе?

РЕДАКТИРОВАТЬ 2: Я считаю, что я нашел проблему.Данные заголовка JFIF камеры являются полностью ненужными.Это в основном просто 0-10 ... Пришлось в конце прочитать его с помощью шестнадцатеричного редактора.Я скопировал через заголовок JFIF из рабочего файла, и теперь все в порядке.Я думаю, мне нужно просто отредактировать каждый заголовок.

Для информации любого, кто сталкивается с этой проблемой с этой камерой:

http://www.4dsystems.com.au/prod.php?id=75

Кажетсявыдавать одну и ту же информацию заголовка мусора с каждой фотографией:

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

И ни один изэто соответствует чему-либо в стандарте JFIF:

http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format

Кажется, что если вы просто замените заголовок JFIF следующим:

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

Будет работать.Просто прочитайте файл до «FF DB», который также находится в заголовке мусора - это, похоже, «стоп-слово» для заголовка - и затем замените его для этого.

Есть второйМногое из того, что может показаться информацией заголовка, продолжается до байта 26E ... и похоже, что оно одинаково на обоих изображениях, которые у меня здесь есть, но, похоже, это не является причиной проблемы загрузки C #.В JFIF это не похоже ни на что, поэтому я не уверен.

1 Ответ

1 голос
/ 01 марта 2012

Мне жаль говорить, но я думаю, что это изображение "испорчено".Я думаю, что поток изображений, сохраняющий это изображение, не закрылся / не удалился должным образом.Я загрузил изображение в XAML и получил ошибку:

Исключение из HRESULT: 0x88982F72

Затем я открыл изображение в Paint / Photoshop и повторно сохранил его.Я открыл заново сохраненное изображение в XAML и без ошибок.Похоже, что Photoshop прочитал его хорошо, и когда он сохранил, он сохранил его правильно

...