2010-09-05 30 views
6

Mối quan tâm về quyền riêng tư đã khiến tôi tin rằng tôi nên quét hình ảnh do người dùng tải lên cho bất kỳ dữ liệu meta nào.Định dạng hình ảnh nào chứa dữ liệu meta và làm thế nào tôi có thể xóa nó trong PHP?

Tôi biết rằng JPEG có EXIF, nhưng tôi không chắc chắn về PNG hoặc GIF (cả hai đều có thể được tải lên trang web của tôi từ công chúng).

Các định dạng này có dữ liệu meta hay không và cách lưu trữ? Cách tốt nhất để loại bỏ nó là gì?

Tôi đang sử dụng PHP 5.29.

Cảm ơn

+1

Đây là một câu hỏi lớn. Nhiều người, thậm chí một số người đang chạy các trang web lớn, không nhận thức được điều này –

+0

@Pekka Cảm ơn bạn :) – alex

Trả lời

2

Cách dễ nhất là sao chép chúng sang hình ảnh mới bằng GD - bạn giữ tất cả thông tin hình ảnh, nhưng loại bỏ siêu dữ liệu.

+1

+1 giải pháp toàn diện nhất - hãy nhớ rằng bạn sẽ trải nghiệm ít nhất mất hình ảnh nhẹ trong hầu hết các trường hợp. Chất lượng JPEG của GD là * khủng khiếp *. Nếu có thể, hãy sử dụng ImageMagick. –

+0

Điều này là tốt, vì tất cả các phiên bản công khai của tôi về hình ảnh * đã * được thu nhỏ với GD. Nếu GD giảm dữ liệu meta theo mặc định, tôi sẽ rõ ràng :). – alex

0

cả hai đều có siêu dữ liệu;)

+3

Hãy cẩn thận để xây dựng xin vui lòng? – alex

0

Tất cả hình ảnh mà sử dụng bất kỳ loại nén chứa siêu dữ liệu. Một số là rất khiêm tốn, trong khi các định dạng khác cho bạn biết nhiều hơn bạn sẽ cần.

+1

Không thực sự là một câu trả lời cho câu hỏi của mình IMO. Anh ta đặc biệt hỏi về dữ liệu liên quan đến quyền riêng tư (Loại máy ảnh được sử dụng, vị trí, phần mềm được sử dụng ...) –

3

Bạn có thể thử http://www.php.net/manual/en/imagick.stripimage.php

$f = '16262403.jpg'; 
$i = new Imagick($f); 
$p = $i->getImageProperties(); 
var_dump($p); 
array(5) { 
    ["comment"]=> 
    string(20) "(C) Drom.ru #4495317" 
    ["date:create"]=> 
    string(25) "2012-05-29T17:15:32+03:00" 
    ["date:modify"]=> 
    string(25) "2012-05-29T17:15:30+03:00" 
    ["jpeg:colorspace"]=> 
    string(1) "2" 
    ["jpeg:sampling-factor"]=> 
    string(11) "2x2,1x1,1x1" 
} 

$i->stripImage(); 

$p = $i->getImageProperties(); 
var_dump($p); 
array(2) { 
    ["jpeg:colorspace"]=> 
    string(1) "2" 
    ["jpeg:sampling-factor"]=> 
    string(11) "2x2,1x1,1x1" 
} 
Các vấn đề liên quan