Hướng dẫn dùng strip exif trong PHP

Tôi cũng đang tìm kiếm một giải pháp cho vấn đề này. Cuối cùng, tôi đã sử dụng PHP để viết lại JPEG với TẤT CẢ dữ liệu Exif bị loại bỏ. Tôi không cần bất kỳ thứ gì trong số đó cho mục đích của mình.

Show

Tùy chọn này có một số lợi thế ...

  • Tệp nhỏ hơn vì dữ liệu EXIF ​​đã biến mất.
  • Không bị giảm chất lượng hình ảnh (vì dữ liệu hình ảnh không thay đổi).

Ngoài ra, một lưu ý khi sử dụng Imagecreatefromjpeg: Tôi đã thử điều này và các tệp của tôi trở nên lớn hơn. Nếu bạn đặt chất lượng thành 100, tệp của bạn sẽ LỚN HƠN vì hình ảnh đã được lấy mẫu lại và sau đó được lưu trữ theo cách không mất dữ liệu. Và nếu bạn không sử dụng chất lượng 100, bạn sẽ mất chất lượng hình ảnh. Cách DUY NHẤT để tránh lấy lại mẫu là không sử dụng imageecreatefromjpeg.

Đây là chức năng của tôi ...

/**
 * Remove EXIF from a JPEG file.
 * @param string $old Path to original jpeg file (input).
 * @param string $new Path to new jpeg file (output).
 */
function removeExif($old, $new)
{
    // Open the input file for binary reading
    $f1 = fopen($old, 'rb');
    // Open the output file for binary writing
    $f2 = fopen($new, 'wb');

    // Find EXIF marker
    while (($s = fread($f1, 2))) {
        $word = unpack('ni', $s)['i'];
        if ($word == 0xFFE1) {
            // Read length (includes the word used for the length)
            $s = fread($f1, 2);
            $len = unpack('ni', $s)['i'];
            // Skip the EXIF info
            fread($f1, $len - 2);
            break;
        } else {
            fwrite($f2, $s, 2);
        }
    }

    // Write the rest of the file
    while (($s = fread($f1, 4096))) {
        fwrite($f2, $s, strlen($s));
    }

    fclose($f1);
    fclose($f2);
}

Mã này khá đơn giản. Nó mở tệp đầu vào để đọc và tệp đầu ra để ghi, sau đó bắt đầu đọc tệp đầu vào. Nó dữ liệu từ cái này sang cái khác. Khi nó đạt đến điểm đánh dấu EXIF, nó sẽ đọc độ dài của bản ghi EXIF ​​và bỏ qua số byte đó. Sau đó, nó tiếp tục bằng cách đọc và ghi dữ liệu còn lại.

11 hữu ích 5 bình luận chia sẻ

Is deleting the EXIF data from images using PHP enough to prevent malicious codes from being executed in a server?

I want to protect the server against the practices described in this blog post:

= 0) {

$rgb = imagecolorsforindex($img, $trans);

$oldimg = $img;
$img = imagecreatetruecolor($w,$h);
$color = imagecolorallocate($img,$rgb['red'],$rgb['green'],$rgb['blue']);
imagefilledrectangle($img,0,0,$w,$h,$color);
imagecopy($img,$oldimg,0,0,0,0,$w,$h);

}

imagejpeg($img,'safe_image.jpg');

?>

Khi xem một bức ảnh, bạn hay thấy người ta kèm theo các thông tin như thông số phơi sáng, nhãn hiệu máy ảnh, thời gian chụp, GPS ... thông tin này được gọi là dữ liệu EXIF. Dữ liệu EXIF có thể là nguồn tham khảo để biết tác giả bức ảnh sử dụng thiết bị gì và cách họ thiết lập các thông số. Bài này tìm hiểu về EXIF và hướng dẫn xem nó, xóa nó...

Hướng dẫn dùng strip exif trong PHP

1. EXIF là gì?
Viết tắt cụm từ "Exchangeable Image File Format" thành EXIF
là một tiêu chuẩn để xác định thông tin liên quan đến một bức ảnh được tạo bởi một thiết bị ghi hình cụ thể, các thông số phơi sáng của máy ảnh, tiêu cự, cân bằng trắng, ngày giờ việc ghi hình xảy ra, và cả vị trí GPS.

  • Thời máy ảnh dùng phim, thợ chụp ảnh thường phải mang theo bút viết để viết note lại những thông tin quan trọng như tốc độ màn trập, khẩu độ ống kính, ngày chụp và cả địa điểm.v.v... Việc này rất quen thuộc với những người mới học chụp, họ ghi lại và rút kinh nghiệm với lần chụp tiếp theo khi một bức ảnh được chụp không thành công. Mình cũng có một cuốn sổ tay viết đủ thứ thế này, sẽ lục tìm lại.
  • Thời máy kỹ thuật số, tất cả thông tin này được được ghi lại ngay trên dữ liệu của bức ảnh và có thể xem trên một số trang web cho upload ảnh (tùy trang). Tuy nhiên, định dạng ảnh ảnh nén phù hợp với website có thể xử lý EXIF là JPEG, nghĩa là bạn không đọc dữ liệu từ các định dạng ảnh khác như GIF hay PNG trên website.
  • Exif thông thường chứa 3 phần thông tin: 1/ Exif cơ bản các thông tin về thiết bị và các con số về thiết lập cài đặt - 2/ dữ liệu XMP lưu các thao tác hậu kỳ đã thực hiện qua các phần mềm chỉnh sửa - 3/ phần thumbnail của ảnh. Ví dụ như ảnh dưới là một đoạn dữ liệu XMP, phần bôi vàng cho thấy ảnh đã được xử lý với công cụ Tone Curvre trong Photoshop CS4.

Hướng dẫn dùng strip exif trong PHP

Một số người lại chọn cách xóa bỏ thông tin EXIF trên ảnh của họ vì lý do cá nhân; có người lại xóa bỏ một cách vô tình (không hề biết việc mình xóa EXIF) khi họ chọn cách lưu ảnh để up lên web. Và, có khá nhiều dữ liệu rác từ các lần lưu trữ như XMP cần xóa để làm nhẹ dung lượng file ảnh để đưa lên website chẳng hạn (xóa thế nào thì ở phần dưới).

2. Làm sao để xem EXIF?

Xem trên trình duyệt Firefox
Nếu bạn đang dùng trình duyệt ảnh Firefoxthì bấm vào link này để tải addon Exif Viewer
Cài đặt Firefox, sau đó tích hợp addon Exif Viewer như hướng dẫn trên trang của Firefox. Khởi động lại và click chuột phải vào ảnh --> "Exif Viewer" để xem. Nếu không thể trích xuất thông tin Exif thì có thể ảnh đó không còn chứa Exif do tác giả xóa trước khi tải lên, hoặc Website đó đã ẩn hoặc xóa Exif khi tải lên.

Hướng dẫn dùng strip exif trong PHP
Hướng dẫn dùng strip exif trong PHP

Đọc thông tin dữ liệu Exif cơ bản ảnh trên ví dụ:

  • Tác giả sử dụng Nikon D5500 - tiêu cự ống kính 16mm
  • ISO 100 - khẩu độ ống kính f/11 - tốc độ màn trập 1/4s

Xem trên trình duyệt Chrome
Ai thích dùng thì tải Chrome rồi add thêm addon "EXIF Viewer" vào Chrome. Tương tự Firefox, click chuột phải vào ảnh và "Show Exif data". Trên Chrome hiển thị chung các thông tin cơ bản và cả histogram, muốn xem thêm các thông tin khác thì vào phần mở rộng. Trên máy Mac của mình thì cách trình bày hơi khó xem chút, không biết trên máy anh em thế nào.

Hướng dẫn dùng strip exif trong PHP

Xem Exif trên một số trang ảnh
Có một số trang cho lưu và hiển thị thông tin Exif, như Flickr, 500px, photos.tinhte.vn... hoặc một số trang lưu trữ ảnh khác cho phép hiển thị Exif và tác giả không xóa Exif khi up ảnh. Tuy nhiên, nếu có thì cũng chỉ một số thông tin cơ bản: thiết bị ghi hình, các thông số thiết lập cơ bản.

Xem Exif trên ứng dụng xem ảnh của HĐH

  • Trên máy chạy HĐH Windows, chỉ cần nhấp chuột phải vào ảnh --> "Details"
  • Trên máy chạy HĐH OS, nhấp đúp mở ảnh --> Cmd i

Hướng dẫn dùng strip exif trong PHP
Hướng dẫn dùng strip exif trong PHP

3. Xóa thông tin Exif

  • Người ta xóa Exif vì một vài lý do:
  • Xóa các thông tin nhạy cảm cá nhân, vị trí GPS
  • Giảm dung lượng để đăng lên các trang mạng
  • Lý do công việc cần xóa thông tin Exif

Cách xóa Exif

  • Trong Photoshop, lưu ảnh theo: File --> Export --> Save for Web. Ở ô "Metadata" chọn "None" để xóa hoàn toàn Exif. Tại ô "Quality" có thể giảm dung lượng file khi up facebook hay website. Mình thường để từ 40 - 60%.

Hướng dẫn dùng strip exif trong PHP

  • Trong Lightroom, export file --> Include. --> Metadata và chọn "Copyright Only" - chỉ xóa các thông tin liên quan đến thiết bị, các thông số thiết lập phơi sáng, nhưng thông tin bản quyền và hình thumb vẫn còn. Nếu muốn xóa hoàn toàn, bạn có thể cài thêm addon ExifTool để thực hiện.

Hướng dẫn dùng strip exif trong PHP

Đó là vài cách để xem, xóa Exif cho một hoặc hàng loạt ảnh. Anh em thường xem hay xóa cách nào đơn giản, dễ dàng khác thì xin chia sẻ bổ sung nha.

---

Khóa học Hacker và Marketing từ A-Z trên ZALO!

Hướng dẫn dùng strip exif trong PHP

Khóa học Hacker và Marketing từ A-Z trên Facebook!

Khóa đào tạo Power BI phân tích báo cáo để bán hàng thành công Bảo mật và tấn công Website - Hacker mũ trắngKHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆPKhóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán (adsbygoogle = window.adsbygoogle || []).push({}); Khóa học hướng dẫn về Moodle chuyên nghiệp và hayXây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp Khoá học Word từ cơ bản tới nâng cao, học nhanh, hiểu sâuKhóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢKhóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng BizagiKhóa học Phân tích dữ liệu sử dụng Power Query trong ExcelKhóa học Phân tích dữ liệu sử dụng SPSS - Chìa khóa thành công!Khóa học "Thiết kế bài giảng điện tử", Video, hoạt hình kiếm tiền Youtube bằng phần mềm Camtasia Studio Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP​​​​​HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍GOOGLE SPREADSHEETS phê không tưởng Khóa hoc lập trình bằng Python tại đây