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 데이터를 가져 오는 과정은 다음과 같습니다.
- EXIF 데이터의 시작을 언급하는 JPEG 마커를 찾습니다. 예를 들어 일반적으로 oxFFE1은 EXIF 데이터를 인코딩하는 동안 삽입 된 마커이며, EXIF 데이터가있는 APPlication 세그먼트입니다.
- 0xFFE1에서 0xFFE2까지의 모든 데이터를 구문 분석합니다. 이 데이터는 JPEG로 인코딩 된 파일의 바이트 스트림입니다.
- 이 바이트에 해당하는 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
'developer tip' 카테고리의 다른 글
Visual Studio를 VB.NET 대신 C # 프로젝트로 기본 설정하는 방법은 무엇입니까? (0) | 2020.11.02 |
---|---|
사용자 이름과 비밀번호를 Python에 안전하게 저장해야합니다. 옵션은 무엇입니까? (0) | 2020.11.02 |
바코드 번호에서 책에 대한 데이터를 조회하려면 어떻게해야합니까? (0) | 2020.11.02 |
.NET 용 Visual Studio 디버거 팁 및 요령 (0) | 2020.11.02 |
LL과 재귀 하강 파서의 차이점은 무엇입니까? (0) | 2020.11.02 |