2011-08-19 5 views
7

이 항목을 검색했지만 찾을 수있는 적합한 스레드는 2008 년 12 월 12 일자로 새로운 질문입니다..NET 4.0 프레임 워크 용 EXIF ​​라이브러리

C# .Net 4.0 언어를 사용하여 프로그램을 개발하고 있습니다. 내 프로그램의 목표는 jpeg (제조업체, 모델, 위치 정보 등 ...)에서 EXIF ​​정보를 추출한 다음이를 MySql/Sql 서버 DB에 채우는 것입니다.

누구든지이 프로젝트에 적합한 라이브러리를 권장하고 싶습니다. 나는 카메라 일련 번호도 찾고있을 것이다. (제조사마다 다르다는 것을 알고있다.) 그러나이 문제를 해결하는 기존의 라이브러리를 알고 있다면, 가장 도움이 될 것이다.

감사 주말 기본 EXIF ​​정보 (제조업체, 카메라 모델, 시간, 조리개 등)

+0

당신은 무료로 도서관 또는 상업적 찾는거야? – Yahia

+0

이 둘을 모두 찾고 있어요. 그것들은 모두 상업용 제품의 비용에 달려 있지만 어떤 제품을 추천 할 수 있다면, 그것들을 들여다 봐서 기쁘게 생각합니다. 그냥 좋은 일을하는 무료 것들이 있다면, 나는 그들을 선호합니다 :) – thefragileomen

+0

나는 어떤 것들을 시도하지 않았어 ...하지만 LeadTools 또는 GdPicutre 좀 봐 ... esp. 카메라 관련 정보는 악몽 일 것입니다. 자주 변경되므로 자주 업데이트해야합니다. – Yahia

답변

4

을 즐길 수, 나는 System.Drawing.Image 클래스에서 볼 것 - 특히 PropertiesItems 모음.

이 클래스에는 단점이 있습니다. EXIF 정보를 검색하기 전에 전체 이미지를 메모리에로드해야합니다 (즉 다소 느립니다). 또한 카메라에서 카메라로 균일하지 않은 모든 공급 업체 특정 필드를 처리하지 않습니다. 내 포토 컬렉션에 대해 다양한 차종의 12 개의 다른 디지털 카메라로 촬영 한 사진의 수천 (수만 정보를 수집하는 데 큰 성공을 사용한

PropertyItem.Id

Image.PropertyItems

MSDN: Reading Image Metadata

및 모델).

+5

나는 이것을 EXIF ​​정보로 사용하여 잘 작동한다는 것을 알았습니다. 이미지로드를 건너 뛰고 메타 데이터 만 가져 오는 기본 제공 방법이 있다는 것을 알고 계셨습니까? 빠른 속도 향상! 당신은'Image.FromFile (Stream, false, false)'를 사용해야합니다 ... 자세한 정보는 다음을 참조하십시오 : http://msdn.microsoft.com/en-us/library/21zw9ah6.aspx –

+1

속도가 중요하다면, .NET 4.0 용 exifLib도 컴파일하십시오. http://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET-2-0. 단일 태그를 읽을 때 Image.FromFile (stream, false, false)보다 빠릅니다. 많은 태그를 읽어야 할 경우 기본 제공 프레임 워크 라이브러리가 더 빠를 수 있습니다. –

7

메타 데이터 추출기 프로젝트는 2002 년 이래로 Java에서 활발하게 진행되었으며 현재 .NET 3.5 이상에서 사용할 수 있습니다. PCL 버전도 있습니다.

  • 오픈 소스 (아파치 2.0)
  • 심하게 테스트하고 널리
  • 많은 이미지 형식을 지원합니다 사용 (JPEG, TIFF, PNG, WebP 형식, GIF, BMP, ICO, PCX ...)
  • 많은 제조업체 고유 필드 (Canon, Nikon, ...)
  • 매우 빠른 (전체 프로세스 ~ 400 이미지는 1.33GB in ~ 3 초) 메모리 사용량이 적습니다.

NuGet 또는 GitHub을 통해 사용할 수 있습니다.

샘플 사용 :

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path); 

foreach (var directory in directories) 
foreach (var tag in directory.Tags) 
    Console.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}"); 

(공개 :이 라이브러리를 유지)

+0

OP는 .NET 4.5+ 이후로만 요청했습니다. – mfeineis

+0

그러나 * 멋진 라이브러리이고 어쩌면 .NET4.0이 붙어있는 불쌍한 영혼을 위해 빌드를 제공 할 수 있습니까? 그거 좋을거야! 내가 직접 VS2015에서 대상 프레임 워크를 변경하려했지만 .NET4.5의 많은 것들에 의존하고있는 것처럼 보입니다 ... – mfeineis

+1

@vanhelgen, 피드백에 감사드립니다! 이전 버전의 .NET에 대한 지원도 추가 할 예정입니다. [이 새로운 호] (https://github.com/drewnoakes/metadata-extractor-dotnet/issues/22)를 참조하십시오. –