2013-09-04 2 views
2

내 사진에서 위치 정보를 가져와야합니다. 위도/경도 및 GPS 버전. 이 질문과 관련된 정보를 이미 찾았습니다. 다른 EXIF ​​헤더를 비교하고 좌표를 제공하는 16 진수 덤프를 발견했습니다. 이제 파일에서 가져와야합니다.델파이를 사용하여 Exif GPS 정보 읽기

매우 간단하게 보일 수 있습니다. 필요한 16 진수 덤프를 얻기 위해 Delphi에서 JPEG 파일을 열려면 어떻게해야합니까?

이미 Chars와 Integers를 읽으려고했지만 아무 것도 효과가 없습니다. 가능한 경우이 작업을 위해 외부 라이브러리를 사용하지 않으려합니다.

이것은 기본적으로 내 주요 질문이지만, 누군가 대답 할 수 있다면 매우 행복 할 것입니다.

특정 덤프 파일을 검색하지 않고도 GPS 태그를 쉽게 검색 할 수 있습니까? 이제 저는 이상한 조합 12 00 02 00 07 00을 찾고 있습니다. 정말 효과가 있습니다. EXIF 문서를 읽었지만 GPS 태그가있는 것을 실제로 이해할 수 없었습니다.

미리 감사드립니다. 당신이 외부 라이브러리가 필요하지 않는 경우 유진

+1

Chris Rolliston은 Exif 정보를 읽기위한 라이브러리를 만들었습니다. GPS 정보 및 소스 ['here'] (https://code.google.com/p/ccr-exif/)를 읽는 예제입니다. –

+0

고맙습니다. 나는 CCR [here] (http://delphihaven.wordpress.com/ccr-exif)에 대한 정보를 보았다. 그러나 그것은 도서관입니다. 다시 – user1131662

+1

@ user1131662 : 그런 다음 Chris의 코드를 사용하여 직접 작성하는 방법을 살펴보십시오. 오픈 소스 코드이며 "GPS 태그가있는 것"을 보여줍니다. 나는 그 문제를 이해하지 못한다. 코드를 연구하기 위해 ** 라이브러리를 ** 사용할 필요는 없습니다. "여기에 어떻게하는지 보여주는 무료 소스 코드가 있습니다." "음, 도서관에서 가져 왔기 때문에 나는 그것을 읽고 싶지 않다." 논리적이지 않습니다. –

답변

5

, 당신은 TFileStream을 바이트의 배열이 작업을 수행 할 수 있습니다. 나는 '사진 찍은 날짜'를 얻기 위해 프로젝트에서이 작업을 수행했으며 GPS 위도 좌표는 EXIF ​​헤더의 다른 필드에 불과합니다. 내가 여기에 코드를 가지고 있지 않지만이 방법은 직선적이다 : 당신이 JPEG 파일에 TFileStream을 일단 :

  • 처음 2 바이트를 읽기, 그것을 확인을 단지에 (사실 $ FF $ D8에 유효한 JPEG)
  • 의 확인이 있는지 확인, 다음 2 바이트를 읽어 $ FF $ E1
      는, 어떤 그것이 세그먼트에 따라 두 개 이상의 바이트를 읽을 있지 않다면
    • (또는 단어) 및 건너 뛰기 그 많은 바이트 (스트림의 Seek 메서드를 호출하여), 여기에 세그먼트 목록이 있습니다 : https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure; 은 ($ 45 $ 78 $ (69) $ 66)에서
    • 무슨 다음하면 $ 00 $ 00 엔디안과 같은 일반 정보를 유지하는 8 바이트 TIFF 헤더는 'EXIF'인 경우 다음이면
  • 반복 4 바이트를 읽어 볼, 당신을 통해 일을하고 당신이 필요로하는 사람을 잡기 위해 필요한 EXIF ​​태그 다음에, 나는 빠른 검색을했고, 여기에 목록을 발견 http://www.exiv2.org/tags.html

그것은 EXIF ​​데이터가 먼저라고 가정하는 것이 안전하기 때문에 JPEG 파일의 킬로바이트 인 경우이 값을 바이트 배열 (또는 TMemoryStream)에서 많이 읽고 그곳에서 데이터를 처리 할 수 ​​있습니다. d는 TFileStream에서 별도로 작은 읽기를 수행하는 것보다 효과적입니다.

+1

1 단계와 관련 : http://stackoverflow.com/questions/18582423/should-i-expect-jpeg-so-marker-at-very-beggining-of-the-data-stream, 2 단계 : http : //스택 오버플로.com/questions/5413022/is-the-2nd-and-3rd-byte-of-a-jpeg-image-always-the-app0-or-app1-marker –

+0

대단히 감사합니다. . 이 메서드를 사용하여 정확한 바이트 시퀀스를 얻을 수 있다면 완전히 행복합니다. – user1131662

+0

누군가이 코드를 이미 작성 했습니까? 방금 오리 엔테이션을 추출하고 싶습니다. – loki

관련 문제