2013-06-04 84 views
1

我可以使用exif標籤獲取jpeg或tiff格式圖像的元數據。但是,我應該怎麼做才能獲得png元數據?使用php獲取png格式圖像的元數據

示例:我的用於獲取EXIF標籤代碼:

<?php 
    $image = "NATU.png"; 
    $exif = exif_read_data($image, 0, true); 
    foreach ($exif as $key => $section) { 
    foreach ($section as $name => $val) { 
    echo "$key.$name: $val <br>"; 
    } 
    } 
    ?> 

回答

1

PNG文件格式定義了一個PNG文件被分成多個數據塊。因此,你必須找到你想要的塊。

假設你有一個很好的格式PNG:

<?php 
    $fp = fopen('18201010338AM16390621000846.png', 'rb'); 
    $sig = fread($fp, 8); 
    if ($sig != "\x89PNG\x0d\x0a\x1a\x0a") 
    { 
    print "Not a PNG image"; 
    fclose($fp); 
    die(); 
    } 

    while (!feof($fp)) 
    { 
    $data = unpack('Nlength/a4type', fread($fp, 8)); 
    if ($data['type'] == 'IEND') break; 

    if ($data['type'] == 'tEXt') 
    { 
     list($key, $val) = explode("\0", fread($fp, $data['length'])); 
     echo "<h1>$key</h1>"; 
     echo nl2br($val); 

     fseek($fp, 4, SEEK_CUR); 
    } 
    else 
    { 
     fseek($fp, $data['length'] + 4, SEEK_CUR); 
    } 
    } 


    fclose($fp); 
?> 
+0

注意,這可能僅僅給出「文字」大塊文字,也有其他PNG兩個文本塊類型。 – leonbloy