2011-11-12 24 views
6

Tôi gặp sự cố với một số ảnh của mình khi tôi muốn đọc dữ liệu EXIF.exif_read_data - Mã định danh EX1 không chính xác APP1

Mã của tôi dưới đây:

$exif_date = exif_read_data($file_path, 'IFD0'); 

Với một số hình ảnh tôi bị warrning: nhắn: exif_read_data (001.jpg) [function.exif đọc dữ liệu]: Không đúng App1 Exif Nhận dạng Mã

Câu hỏi của tôi là: làm thế nào tôi có thể awoid warrning này, tôi có thể kiểm tra bằng cách nào đó nếu app1 là chính xác trước khi exif_read? Cảm ơn bạn đã trợ giúp.

+0

Tôi vẫn không biết tại sao tôi có cảnh báo này, vì vậy tôi tìm thấy cách duy nhất để loại bỏ nó là đặt "@" trước exif_read_data – baranq

Trả lời

0

Bạn có thể sử dụng getimagesize() chức năng của PHP để trích xuất các mốc APP từ tập tin và sau đó kiểm tra xem các điểm đánh dấu App1 thực sự chứa dữ liệu EXIF ​​(nội dung cho điểm đánh dấu rằng nên bắt đầu với 'Exif')

11

Đối với câu trả lời nhanh , hãy xem các hàng cuối cùng của bài đăng này.

Tôi nghĩ rằng một số mã vẫn bị thiếu. Tôi đến chính xác trên cùng một vấn đề và sau khi tìm kiếm tôi tìm thấy nhiều trang web liên quan đến vấn đề này:

http://drupal.org/node/556970 một báo cáo lỗi với 2 giải pháp:

  1. chỉ cần đặt một @ trước exif_read_data
  2. séc $imageinfo['APP1'] nếu nó chứa Exif

Sau khi đọc câu trả lời của dcro tại đây, tôi phát hiện tham số thứ hai là getimagesize() trả về một mảng $imageinfo như vậy. Bây giờ tôi thử nghiệm một trong những hình ảnh của tôi với đoạn mã sau:

<?php 
getimagesize("test.jpg", $info); 
var_dump($info); 
?> 

này trở như sau:

array(1) { 
    ["APP1"]=> 
    string(434) "http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> 
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Exempi + XMP Core 4.1.1"> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"> 
    <dc:type>Image</dc:type> 
    <dc:format>image/jpeg</dc:format> 
    </rdf:Description> 
</rdf:RDF> 
</x:xmpmeta> 

<?xpacket end="w"?>" 
} 

này btw. trông không giống Exif. Điều này trông giống như XMP, nhưng phần buồn cười là ví dụ exiftool tìm thấy một số dữ liệu exif (định hướng ví dụ). Trong XMP specification tôi thấy rằng có thể có dữ liệu XMP và Exif cạnh nhau trong một tệp (trang 18). Tìm kiếm thêm tiết lộ rằng có kịch bản như thế này đến extract Exif from XMP.

Dù sao, vì

  1. getimagesize() không cung cấp cho tôi thông tin có thể sử dụng về Exif trong hình ảnh của tôi và
  2. kịch bản tuyên bố cho thấy trong hình ảnh của tôi dữ liệu Exif không được nhúng vào các dữ liệu XMP và
  3. nó chỉ đơn giản có tác dụng ngăn chặn các exif đọc dữ liệu() cảnh báo

tôi vẫn sẽ sử dụng giải pháp @exif-read-data($file_path).

Các vấn đề liên quan