2008-10-23 35 views
19

Trên trang web của chúng tôi, chúng tôi nhận được một lượng lớn ảnh được tải lên từ nhiều nguồn khác nhau.Làm cách nào để thêm dữ liệu exif vào hình ảnh?

Để giữ cho các tập tin kích thước xuống, chúng tôi cởi tất cả exif data từ nguồn sử dụng mogrify:

mogrify -strip image.jpg 

gì chúng tôi muốn để có thể làm là để chèn một số dữ liệu Exif cơ bản (Copyright Initrode , vv) trở lại hình ảnh "sạch" mới này, nhưng tôi dường như không tìm thấy bất kỳ thứ gì trong tài liệu có thể đạt được điều này.

Có ai có kinh nghiệm làm việc này không?

Nếu nó không thể được thực hiện thông qua imagemagick, một giải pháp dựa trên PHP sẽ là điều tốt nhất tiếp theo!

Cảm ơn.

Trả lời

13

Bạn có thể tiết kiệm một lượng lớn không gian, đặc biệt nếu bạn có nhiều hình ảnh ..

Thêm nội dung sau vào văn bản.txt (định dạng của thẻ IPTC lấy từ here):

2#110#Credit="My Company" 
2#05#Object Name="THE_OBJECT_NAME" 
2#55#Date Created="2011-02-03 12:45" 
2#80#By-line="BY-LINE?" 
2#110#Credit="The CREDIT" 
2#115#Source="SOURCE" 
2#116#Copyright Notice="THE COPYRIGHT" 
2#118#Contact="THE CONTACT" 
2#120#Caption="AKA Title" 

Strip tất cả dữ liệu Exif hiện từ hình ảnh

mogrify -strip image.jpg 

Thêm tín dụng cho hình ảnh của bạn

mogrify -profile 8BIMTEXT:text.txt image.jpg 
+1

Điều đó sẽ hoạt động độc đáo, cổ vũ! – ConroyP

+0

Bất cứ ai biết cú pháp thêm thẻ chủ đề, vui lòng cập nhật giải pháp. –

12

Exiftool có vẻ như nó sẽ phù hợp với bạn.

Tôi chưa thử nó nhưng bây giờ tôi bị cám dỗ để đi và sửa tất cả ảnh tuần trăng mật của tôi được đánh dấu 01/01/2074 vì tôi quên đặt lại ngày sau khi pin bị chết.

+0

Xin cảm ơn - mẹo hàng đầu. Đưa tôi ra khỏi một cái lỗ. –

6

Đây là số PHP Exif Library cần thực hiện những gì bạn cần.

Các Exif Thư viện PHP (PEL) cho phép bạn thao tác hoàn toàn Exif (Exchangeable Hình ảnh Định dạng File) dữ liệu. Đây là dữ liệu mà máy ảnh kỹ thuật số đặt trong hình ảnh của chúng, chẳng hạn như ngày và thời gian , tốc độ màn trập, giá trị ISO và do đó bật.

Sử dụng PEL, người ta có thể sửa đổi hoàn toàn dữ liệu ExExif, có nghĩa là cả hai có thể được đọc và viết bằng . Hoàn toàn mới Exif dữ liệu cũng có thể được thêm vào hình ảnh. PEL được viết hoàn toàn bằng PHP và phụ thuộc vào không có gì ngoại trừ cài đặt PHP tiêu chuẩn, phiên bản 5. PEL là được lưu trữ trên SourceForge.

+0

Liên kết đó đã chết ngay bây giờ. – GreenMatt

+0

PEL hiện được lưu trữ tại github http://lsolesen.github.io/pel/ –

1

tôi nghi ngờ bạn sẽ đạt được rất nhiều không gian bằng cách loại bỏ thông tin Exif ...

Dù sao, tôi có thể sai, nhưng Exif siêu dữ liệu thuộc nhiều hơn để lưu trữ kỹ thuật (và theo ngữ cảnh) thông tin. Đối với các nội dung như bản quyền, bạn nên sử dụng IPTC thay thế.

Đó là điều bạn có thể làm, rõ ràng với ImageMagick: Write IPTC Data to Jpeg with ImageMagick.

5

trên linux có là một chương trình được gọi là jhead. Nó có thể thêm một tiêu đề exif tối thiểu bằng lệnh:

jhead -mkexif img.jpg

0

Bạn có thể làm điều này trực tiếp trong PHP sử dụng thư viện PEL. Bạn sẽ làm điều này bằng cách đơn giản ghi đè EXIF-tiêu đề hiện có,

// Load image data 
$data = new PelDataWindow(file_get_contents('IMAGE PATH')); 

// Prepare image data 
$jpeg = $file = new PelJpeg(); 
$jpeg->load($data); 

// Create new EXIF-headers, overwriting any existing ones (when writing to disk) 
$exif = new PelExif(); 
$jpeg->setExif($exif); 
$tiff = new PelTiff(); 
$exif->setTiff($tiff); 

// Create Ifd-data that will hold EXIF-tags 
$ifd0 = new PelIfd(PelIfd::IFD0); 
$tiff->setIfd($ifd0); 

// Create EXIF-data for copyright 
$make = new PelEntryAscii(PelTag::COPYRIGHT, '2008-2017 Conroy'); 
$ifd0->addEntry($make); 

// Add more EXIF-data... 

// Save to disk 
$file->saveFile('IMAGE.jpg'); 

Bạn có thể tìm thấy một danh sách đầy đủ của tất cả các EXIF ​​dữ liệu được hỗ trợ (PelTag) in the PEL docs.

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