2012-04-16 32 views
10

Tôi gặp một số sự cố với hình ảnh có dữ liệu EXIF ​​/ IPTC được lưu trong đó.
Khi tôi sử dụng imageCreateFromJpeg (để xoay/cắt hoặc vv), tệp mới được lưu trữ không bảo toàn dữ liệu EXIF ​​/ IPTC.Sao chép hình ảnh và lưu giữ dữ liệu EXIF ​​/ IPTC của nó bằng PHP imageCreateFromJpeg?

mã hiện tại của tôi trông như thế này:

<?php 
// Before executing - EXIF/IPTC data is there (checked) 
$image = "/path/to/my/image.jpg"; 
$source = imagecreatefromjpeg($image); 
$rotate = imagerotate($source,90,0); 
imageJPEG($rotate,$image); 
// After executing - EXIF/IPTC data doesn't exist anymore. 
?> 

Am tôi làm sai điều gì?

Trả lời

7

Bạn không làm gì sai, nhưng GD không xử lý Exif của dữ liệu IPTC vì nó vượt quá phạm vi của những gì GD làm.

Bạn sẽ phải sử dụng thư viện của bên thứ ba hoặc phần mở rộng PHP khác để đọc dữ liệu từ hình nguồn và chèn lại vào hình ảnh đầu ra được tạo bởi imagejpeg.

Dưới đây là một số thư viện quan tâm: pel (php exif library), ví dụ về php.net hiển thị cách use pel để thực hiện những gì bạn muốn, php metadata toolkit, iptcembed() function.

+0

Ahh ... Nói cách khác tôi phải sao chép dữ liệu EXIF ​​/ IPTC và lưu trữ trong hình ảnh mới? – tftd

+2

Đúng, trước hoặc sau khi tạo hình ảnh, bạn sẽ phải trích xuất dữ liệu meta từ hình ảnh nguồn. Vì bạn đang sử dụng 'imagejpeg' để xuất hình ảnh cuối cùng, bạn phải ghi nó vào hình ảnh cuối cùng sau khi bạn đã lưu nó ra. – drew010

+0

Cảm ơn sự giúp đỡ :) – tftd

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