developer tip

C #을 사용하여 파일에서 EXIF ​​데이터를 가져 오는 방법

optionbox 2020. 11. 2. 07:52
반응형

C #을 사용하여 파일에서 EXIF ​​데이터를 가져 오는 방법


내 jpeg 사진을 살펴보고 예를 들어 날짜가 지정된 폴더로 정렬하는 작은 프로그램을 C #으로 작성하고 싶습니다 (나의 데이트 규칙, 젠장 ...).

누구든지 날짜 및 시간 또는 노출과 같은 EXIF ​​데이터를 프로그래밍 방식으로 얻는 비교적 쉬운 방법을 알고 있습니까? 감사!


메타 데이터 추출기를 확인하십시오 . Java로 작성되었지만 C #으로 이식되었습니다. Java 버전을 사용하여 날짜 및 모델 태그를 기반으로 jpeg 파일의 이름을 바꾸는 작은 유틸리티를 작성했습니다. 사용하기 매우 쉽습니다.


EDIT 메타 데이터 추출기 는 .NET도 지원합니다. 이미지와 비디오에서 메타 데이터에 액세스하기위한 매우 빠르고 간단한 라이브러리입니다.

Exif뿐만 아니라 IPTC, XMP 및 JPEG, PNG, GIF, PNG, ICO, WebP, PSD 등 파일 형식의 기타 여러 유형의 메타 데이터를 완벽하게 지원합니다.

var directories = ImageMetadataReader.ReadMetadata(imagePath);

// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

// access the date time
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);

NuGet을 통해 사용할 수 있으며 코드는 GitHub에 있습니다 .


제안 된대로 타사 라이브러리를 사용하거나 수동으로 수행 할 수 있지만 (별로 작업하지 않음) 가장 간단하고 유연한 방법은 .NET의 기본 제공 기능을 사용하는 것입니다. 자세한 내용은 다음을 참조하십시오.

.NET은 어떤 방식 으로든 데이터를 해석하거나 통합하려고하지 않기 때문에 "가장 유연하다"고 말합니다. 각 EXIF에 대해 기본적으로 바이트 배열을 얻습니다. 실제로 원하는 제어 정도에 따라 좋을 수도 있고 나쁠 수도 있습니다.

또한 속성 목록이 실제로 EXIF ​​값과 직접 일치하지 않는다는 점을 지적해야합니다. EXIF 자체는 ID가 겹치는 여러 테이블에 저장되지만 .NET은 모든 항목을 하나의 목록에 넣고 일부 항목의 ID를 재정의합니다. 그러나 정확한 EXIF ​​ID에 대해 신경 쓰지 않는 한 .NET 매핑에 문제가 없습니다.


편집 : https://stackoverflow.com/a/552642/2097240에 따라 전체 이미지를로드하지 않고도 수행 할 수 있습니다.


다음은 .Net의 "읽기, 쓰기 및 사진 메타 데이터"대한이 좋은 기사를 가리키는 다른 유사한 SO 질문에 대한 링크 입니다.


F-Spot 과 같은 애플리케이션에서 사용되는 TagLib #사용할 수 있습니다 . Exif 외에도 이미지, 오디오 및 비디오에 대한 많은 양의 메타 데이터 형식을 읽습니다.

나는 또한 ExifUtils API를 좋아 하지만 버그가 있고 적극적으로 개발되지 않았습니다.


이미지 클래스에는 PropertyItems 및 PropertyIdList 속성이 있습니다. 사용할 수 있습니다.


JPEG 이미지에서 EXIF ​​데이터를 가져 오는 과정은 다음과 같습니다.

  1. EXIF 데이터의 시작을 언급하는 JPEG 마커를 찾습니다. 예를 들어 일반적으로 oxFFE1은 EXIF ​​데이터를 인코딩하는 동안 삽입 된 마커이며, EXIF ​​데이터가있는 APPlication 세그먼트입니다.
  2. 0xFFE1에서 0xFFE2까지의 모든 데이터를 구문 분석합니다. 이 데이터는 JPEG로 인코딩 된 파일의 바이트 스트림입니다.
  3. 이 바이트에 해당하는 ASCII에는 이미지 날짜, 카메라 모델 이름, 노출 등과 관련된 다양한 정보가 포함됩니다.

Phil Harvey 의 명령 줄 도구 ExifTool은 수많은 독점 RAW 형식을 포함하여 수십 개의 이미지 형식과 함께 작동하며 EXIF, GPS, IPTC, XMP, JFIF를 포함한 다양한 메타 데이터 형식을 조작 할 수 있습니다.

사용하기 매우 쉽고 가볍고 인상적인 응용 프로그램입니다.

참고 URL : https://stackoverflow.com/questions/58649/how-to-get-the-exif-data-from-a-file-using-c-sharp

반응형