2016-12-30 33 views
2

我試圖使用PHP的本地函數來檢索JPEG文件的關鍵字檢索關鍵字:無法從圖像

exif_read_data

但它不會檢索關鍵詞數據。

試過一堆方式,其他圖書館一樣PEL,等他們都沒有工作。

這是我看到在我的Mac:

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) 
    } 
} 

我使用Ubuntu的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塊。

那麼試試這個:

<?php 

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

更詳細的例子,您可以在這個官方文檔註釋
發現:http://php.net/manual/en/function.iptcparse.php

IPTC標題是:

<?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方式(工作

用法:

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

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

或用DB的ORM使用(例如:鋒):

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

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



P.S.爲您的功能