2013-10-29 2 views
4

System.Drawing.Image.GetPropertyItem (0x0112)을 사용하여 방향 Exif 값을 읽으려고합니다.Windows XP/2003에서 Windows 7에 비해 System.Drawing.Image.GetPropertyItem이 다르게 작동하는 이유

Windows 7 및 Windows 2008 R2에서는 제대로 작동하지만 Windows XP/Windows Server 2003에서는 실패합니다 ('속성을 찾을 수 없음'오류 발생). 내가합니다 (PropertyItems System.Drawing.Image의 속성을 사용하여) 사용할 수있는 속성을 반복하는 경우

윈도우 XP/2003에

, 난 단지 동일한와 0x5090 (PropertyTagLuminanceTable) 및 0x5091 (PropertyTagChrominanceTable)

를 얻을 수 Windows 7/Windows 2008의 이미지는 18 개의 속성을 가지며 그 중 하나는 0x0112입니다.

나는 이것이 비스타와 그 이후 버전의 윈도우가 새로운 버전의 GDI +를 가지고 있다는 것과 관련이 있다고 생각됩니다. Exif 데이터를 읽고 쓰는 코드를 쓰지 않아도 Windows XP/2003에서 작동하도록하는 방법이 있습니까?

답변

1

NuGet에 ExifReader 및 첨부 된 CodeProject 문서 here이라는 라이브러리가 있습니다.

다음 코드는 방향을 얻기 위해 일해야하며, 메타 데이터의 다른 조각을 얻을 수 ExifTags의 다른 열거를 사용할 수 있습니다 : 나는 윈도우 XP 32 비트 SP3에 this image으로 검사를하지

object result; 

var reader = new ExifReader("c:\\temp\\test\\sample.jpg"); 
reader.GetTagValue(ExifTags.Orientation, out result); 

var orientation = Convert.ToInt32(result); 

을 닷넷 4를 사용하고 올바른 방향 인 1의 방향을 리턴했습니다.

+0

ExifReader가 작동합니다. 나는 왜 행동에 차이가 있는지 알고 싶다. – tardomatic

+0

이것은 유용한 대답 (+1)이지만 OP의 질문 (-1)을 다루지 않습니다. – stakx