5

PHPを使用してjpg画像(http://pepeliana.com/images/DSC4008.jpg)からiptcメタデータを取得しようとしています。参照画像の Title メタデータは「Testing」に設定されています。私はphpマニュアルと、仕事をしているように見える両方の関数-iptcparse()とexif_read_data()を調べました。どちらの機能もphpで有効になっています。しかし、私の人生では、両方の関数が目的のデータを返さない理由がわかりません。これは私が試したサンプルコードであり、タイトルiptcメタデータを持ついくつかの画像でもこのコードを試したことに言及する必要があります(したがって、破損した画像や不適切に設定されたメタデータの可能性を排除します):

<?php 
$size = getimagesize ('DSC4008.jpg', $info);       
 if(is_array($info)) {   
    $iptc = iptcparse($info["APP13"]);
    foreach (array_keys($iptc) as $s) {             
        $c = count ($iptc[$s]);
        for ($i=0; $i <$c; $i++)
        {
            echo $s.' = '.$iptc[$s][$i].'<br>';
        }
    }                 
}
 ?>

また:

<?php
$exif = exif_read_data('DSC4008.jpg', 0, true);
echo $exif['WINXP']['Title'];
?>

ご覧のとおり、これは非常に単純ですが、どちらも必要なものを返すことができません。明らかに単純なものが欠けているに違いありません。助けてください!

4

3 に答える 3

1

イメージの ImageDescription を「Testing」に設定しました。
これは次のように機能します。

$exif = exif_read_data('1.jpg','IFD0',true);
echo $exif["IFD0"]["ImageDescription"];

エコー

Testing
于 2012-11-26T21:43:53.400 に答える
1

これを試して:

$size = getimagesize( 'DSC4008.jpg', $iptch );

$iptc = isset( $iptch['APP13'] ) ? iptcparse( $iptch['APP13'] ) : false;
$name = isset( $iptc['2#005'] ) ? $iptc['2#005'][0] : 'Undefined';
于 2018-06-19T13:04:25.800 に答える
1

同様の問題があり、そのために独自のライブラリを作成しました

最初 — Composerでインストールする必要があります

composer require ibudasov/php7-iptc-manager

それで

// import the Manager class
use iBudasov\Iptc\Manager;

// ... and instantiate it!
$manager = Manager::create();

$manager->loadFile('./DSC4008.jpg');

$title = $manager->getTag(Tag::OBJECT_NAME);
于 2018-09-06T12:37:27.003 に答える