2012-02-29 3 views
1

시리얼 포트를 통해 연결된 카메라에서 JPEG 이미지를 가져 오는 프로그램을 작성하고 있습니다. 이미지의 Source 특성을 사용하여 검색된 이미지를 표시하기 위해 WPF에서 이미지를 프로그래밍 방식으로 정의하고 싶습니다.JPEG 시리얼 카메라의 이미지가 C#으로 로딩되지 않았습니다. BitmapImage

나는

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

대부분의 이미지가 절대적으로 잘 작동하지만 몇 가지 이유는이 카메라에서 이미지를 좋아하지 않는 것으로 나타났습니다. JPEG에 대해 저보다 많이 아는 사람이라면 누구나 그것을 살펴보고 문제가 될 수있는 이유를 알아주십시오.

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

편집 : 일부 조사 후, 나는 WPF/C#을 좋아하지 않는 JFIF 헤더 데이터가 아마도 것으로 확인되었습니다. 프로그램 내에서이를 수정할 수있는 쉬운 방법이 있습니까?

편집 2 : 나는 문제를 발견했다고 생각합니다. 카메라의 JFIF 헤더 데이터는 완전한 쓰레기입니다. 그것은 기본적으로 0-10입니다 ... 결국 16 진수 편집기로 읽어야했습니다. 나는 작업 파일에서 JFIF 헤더를 가로 질러 복사했는데 이제는 괜찮습니다. 들어오는대로 각 헤더를 편집해야합니다.

FF D8 FF E0 00 11 :

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

각 사진과 같은 정크 헤더 정보를 제공하는 것 :이 카메라로이 문제가 발생 사람의 정보를

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

그리고 그 중 어느 것도 JFIF 표준과 일치하지 않습니다.

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

것 같습니다 당신이 바로이 함께 JFIF 헤더를 대체 할 경우 :

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

효과가있을 것입니다. 그냥 정크 헤더에있는 "FF DB"까지 파일을 읽으십시오. 헤더에 대한 '중지 단어'인 것처럼 보입니다. 그런 다음 스왑 아웃합니다.

가 바이트 26E 때까지 계속 헤더 정보로 나타날 것입니다 무슨의 두 번째 많은입니다 ... 그리고 내가 여기에있는 이미지 모두에서 동일하게 보이지만이 될 것 같지 않습니다 C# 로딩 문제의 원인. JFIF에서는 아무 것도 보이지 않으므로 잘 모르겠습니다.

답변

1

미안하지만이 이미지가 "부패한 것 같습니다." 이 이미지를 저장 한 이미지 스트림이 제대로 닫히지 않았거나 적절하게 처리되지 않았다고 생각합니다. 나는 XAML에서 이미지를로드 오류 가지고 : HRESULT에서

예외 : 다음

0x88982F72

나는 페인트/포토샵에서 이미지를 열고 다시 저장을. XAML에서 다시 저장 한 이미지를 열었습니다. 오류가 없습니다. Photoshop이 잘 읽은 것처럼 보였고 제대로 저장하면 저장했습니다.

+0

손상된 방법을 알아내는 데 도움이되는 정보가 있습니까? 나는 그것이 나쁘다는 것을 알지만, 그것이 내 프로그램인지 카메라인지를 잘 모른다. – Luke

+0

페인트를 사용하여 저장 한 후 이미지가 20KB 대신 41KB로 두 배가되었음을 확인했습니다. – Luke

+0

OP를 편집했습니다. – Luke

관련 문제