2014-02-14 5 views
1

다음과 같은 문제가 있습니다.exif_read_data 대 exec (exiftool ...)

새로운 상속 된 프로젝트에서 유지 관리 작업을합니다. 개발자는이 방법으로 이미지 및 비디오의 메타 데이터 작업이 프로젝트 : 당신이 읽을 수있는 것처럼

function getRotationFromFile($realPath) { 
    $retVal = Array(); 

    $cmd = variable_get("exiftool",null) . "\"$realPath\"" . " | grep -E 'Rotation|Camera Identifier'"; 
    exec($cmd, $output); 

    foreach ($output as $row){ 
     $key = trim(strstr($row, ':', true)); 
     $value = trim(str_replace(": ", "", strstr($row, ': '))); 
     $retVal[$key] = $value; 
    } 
    return $retVal; 
} 

는,이 기능 (.. exiftool)을 간부를 호출하고 일부 메타 데이터를 검색 할 수 있습니다. 나는 PHP에서 exif_read_data이 있다는 것을 알고있다.

내 질문은 :

  1. 가장 좋은 방법은 무엇입니까?
  2. 더 빠른 사람은 누구입니까?
  3. "올바른"사람은 누구입니까?
  4. 마지막으로, 내가 검색하려고하지만 exif_read_data 소스

에서 사용 exiftool이 사전에 감사하면 내가 발견하지 않습니다!

답변

1

내가 알 수있는 것으로부터, exif_read_data는 TIFF 및 Jpg 파일로 제한되는 것뿐만 아니라 다른 종류의 메타 데이터가 아닌 EXIF ​​데이터를 읽습니다. EXIF 청크는 비디오 파일에 매우 드물게 나타납니다. 또한 해당 코드에서 찾고있는 두 태그, Camera IdentifierRotation은 태그가 EXIF ​​사양의 일부가 아닙니다. 은 Quicktime 태그 인 반면 Rotation은 Nikon 및 Canon makernotes 태그 인 것으로 보입니다.

할 수있는 일은 Exiftool이 grep을 통해 파이핑하는 대신 원하는 태그 만 표시하도록 지시하는 것입니다. 이는 -CameraIdentifier -Rotation을 명령 행에 추가하여 수행 할 수 있습니다. 조용한 옵션 인 -q도 유용 할 수 있습니다.

Orientation 태그를 이미지 파일의 방향을 유지하기위한 표준 태그로 볼 수도 있습니다.

@tsmgeek는 시작시의 오버 헤드에 대해 정확하므로 가장 좋은 해결책을 가지고있을 것입니다.

+0

이 오래된 게시물에 시간을내어 보내 주셔서 감사합니다.이 질문은 내가 물어 본 것보다 더 완성 된 답변입니다. –

+0

흠, 나는 데이트조차 못 들었어. 그것은 ExifTool을위한 나의 필터의 꼭대기에 갑자기 나타났습니다. 그래서 그것은 새로운 것이라고 생각했습니다. – StarGeek

3

exiftool을 통해 읽기/쓰기를 매우 빠르게 할 수있는 PHP 스크립트를 만들었습니다. 우리는 기어 맨과 함께 사용하므로 백그라운드 서비스로 실행됩니다. 가장 빠른 부분은 exiftool입니다. 그런 다음 gearman에 작업을 전달하여 PHP 스크립트에서 호출합니다. 약 5 개의이 스크립트 인스턴스를 실행하기 때문에 신속하게 서비스를 제공 할 수 있습니다. 하나의 프로세스가 약 1-2 개의 파일로 약 100 개의 파일을 처리 할 수 ​​있어야합니다.이 과정은 파일 크기와 저장 속도에 따라 다르지만 확장 성은 뛰어납니다. Digital Asset Management 플랫폼에서 지난 5 개월 간 생산되었습니다.

https://github.com/tsmgeek/ExifTool_PHP_Stayopen

0

PHP 함수 exif_read_data은 JPEG 및 TIFF 파일 형식을 지원합니다. 명령 행 유틸리티 exiftool - 훨씬 더.

관련 문제