2016-12-30 4 views
2

에서 키워드를 검색 할 수 없습니다.내가 PHP의 기본 기능을 사용하여 JPEG 파일의 키워드를 검색하기 위해 노력하고있어 이미지

많은 시도가 있었고 PEL과 같은 다른 라이브러리도있었습니다.

enter image description here

그리고 여기 exif_read_data($image, 'ANY_TAG', true); 함수의 출력입니다 : 여기

는 내 맥에 표시되는 내용입니다

array(4) { 
    ["FILE"]=> 
    array(6) { 
    ["FileName"]=> 
    string(17) "casino-st1-01.jpg" 
    ["FileDateTime"]=> 
    int(1483098243) 
    ["FileSize"]=> 
    int(454913) 
    ["FileType"]=> 
    int(2) 
    ["MimeType"]=> 
    string(10) "image/jpeg" 
    ["SectionsFound"]=> 
    string(19) "ANY_TAG, IFD0, EXIF" 
    } 
    ["COMPUTED"]=> 
    array(5) { 
    ["html"]=> 
    string(26) "width="4167" height="4167"" 
    ["Height"]=> 
    int(4167) 
    ["Width"]=> 
    int(4167) 
    ["IsColor"]=> 
    int(1) 
    ["ByteOrderMotorola"]=> 
    int(1) 
    } 
    ["IFD0"]=> 
    array(4) { 
    ["ImageDescription"]=> 
    string(58) "playing card icon illustration isolated vector sign symbol" 
    ["Orientation"]=> 
    int(1) 
    ["Software"]=> 
    string(35) "Adobe Illustrator CC 2015 (Windows)" 
    ["DateTime"]=> 
    string(19) "2016:12:15 08:30:58" 
    } 
    ["EXIF"]=> 
    array(2) { 
    ["ExifVersion"]=> 
    string(4) "0221" 
    ["ColorSpace"]=> 
    int(65535) 
    } 
} 

나는 우분투 16에 최신 PHP7 설치를 사용하고 내 PHP 설정은 다음으로 설정됩니다.

[exif] 
exif.encode_unicode = UTF-8 
exif.decode_unicode_motorola = UCS-2LE 

잘못하고있는거야?

+0

[이미지 데이터에서 키워드 찾기] (http://stackoverflow.com/questions/9050856/finding-keywords-in-image-data) – bansi

답변

3

데이터가 IPTC 블록에 있다고 생각합니다. http://php.net/manual/en/function.iptcparse.php

IPTC 헤더는 다음과 같습니다 :이 공식 문서에 주석
에서 찾을 수

<?php 

$size = getimagesize('leaf.jpg', $info); 
//var_dump($info);die; 
var_dump(iptcparse($info['APP13'])); 

자세한 예 :

그래서이 일을하려고 여기

<?php 

DEFINE('IPTC_OBJECT_NAME', '2#005'); 
DEFINE('IPTC_EDIT_STATUS', '2#007'); 
DEFINE('IPTC_PRIORITY', '2#010'); 
DEFINE('IPTC_CATEGORY', '2#015'); 
DEFINE('IPTC_SUPPLEMENTAL_CATEGORY', '2#020'); 
DEFINE('IPTC_FIXTURE_IDENTIFIER', '2#022'); 
DEFINE('IPTC_KEYWORDS', '2#025'); 
DEFINE('IPTC_RELEASE_DATE', '2#030'); 
DEFINE('IPTC_RELEASE_TIME', '2#035'); 
DEFINE('IPTC_SPECIAL_INSTRUCTIONS', '2#040'); 
DEFINE('IPTC_REFERENCE_SERVICE', '2#045'); 
DEFINE('IPTC_REFERENCE_DATE', '2#047'); 
DEFINE('IPTC_REFERENCE_NUMBER', '2#050'); 
DEFINE('IPTC_CREATED_DATE', '2#055'); 
DEFINE('IPTC_CREATED_TIME', '2#060'); 
DEFINE('IPTC_ORIGINATING_PROGRAM', '2#065'); 
DEFINE('IPTC_PROGRAM_VERSION', '2#070'); 
DEFINE('IPTC_OBJECT_CYCLE', '2#075'); 
DEFINE('IPTC_BYLINE', '2#080'); 
DEFINE('IPTC_BYLINE_TITLE', '2#085'); 
DEFINE('IPTC_CITY', '2#090'); 
DEFINE('IPTC_PROVINCE_STATE', '2#095'); 
DEFINE('IPTC_COUNTRY_CODE', '2#100'); 
DEFINE('IPTC_COUNTRY', '2#101'); 
DEFINE('IPTC_ORIGINAL_TRANSMISSION_REFERENCE', '2#103'); 
DEFINE('IPTC_HEADLINE', '2#105'); 
DEFINE('IPTC_CREDIT', '2#110'); 
DEFINE('IPTC_SOURCE', '2#115'); 
DEFINE('IPTC_COPYRIGHT_STRING', '2#116'); 
DEFINE('IPTC_CAPTION', '2#120'); 
DEFINE('IPTC_LOCAL_CAPTION', '2#121'); 

하고는 귀하의 IPTC OOP 방식으로 작업하는 클래스 (:

,853,210

사용 :

$file = 'leaf.jpg'; 
$iptcData = new IPTCData($file); 

$title = $iptcData->getTitle(); 
$descriptions = $iptcData->getDescription(); 
$keywords = $iptcData->getKeywords(); 

또는 DB으로 ORMs와 함께 사용 (예 : 웅변) :

$file = 'leaf.jpg'; 
$iptcData = new IPTCData($file); 

$ImageInfo = new ImageInfo($iptcData->getAll()); 
$ImageInfo->save(); 



P.S. 당신을 위해 필요한 수업을 자유롭게 확장하십시오. 기능