- Nhân Chromium đã khôi phục hỗ trợ JPEG XL, khiến định dạng ảnh từng bị khai tử lại được chú ý trở lại
- Năm 2022, Google đã loại bỏ JPEG XL với lý do “thiếu sự quan tâm từ hệ sinh thái”, nhưng áp lực liên tục từ cộng đồng và các công ty lớn vẫn tiếp diễn
- Nhiều tổ chức như Meta, Intel, Adobe, Cloudinary, Krita đã công khai ủng hộ việc duy trì định dạng này
- Gần đây, PDF Association bày tỏ ý định chọn JPEG XL làm định dạng mặc định cho nội dung HDR, càng củng cố xu hướng này
- Quyết định tái đưa vào Chrome được xem là bước ngoặt làm tăng khả năng JPEG XL trở thành tiêu chuẩn phổ biến
Bối cảnh sự trở lại của JPEG XL
- Năm 2022, nhóm Chromium đã gỡ mã và cờ của JPEG XL với lý do “không có đủ sự quan tâm từ hệ sinh thái” và “thiếu lợi thế so với các định dạng hiện có”
- Khi đó, cộng đồng đã nêu rõ sự ủng hộ từ các tổ chức lớn như Meta, Intel, Cloudinary, Adobe, ffmpeg, libvips, Krita
- Sau đó, trên blog, video và mạng xã hội, các phản ứng chỉ ra tính phi lý của quyết định loại bỏ vẫn tiếp tục xuất hiện
- Cuối năm 2025, nhóm Chromium đã chuyển issue JPEG XL từ trạng thái
Obsolete sang Assigned, chính thức bắt đầu quy trình khôi phục
- Trong nhóm phát triển Blink, Rick Byers cho biết “hoan nghênh một bộ giải mã JPEG XL có hiệu năng tốt và an toàn bộ nhớ”
- Quyết định này dựa trên các tín hiệu tích cực như Safari hỗ trợ, Firefox thay đổi lập trường và động thái chấp nhận từ PDF Association
Firefox và việc phát triển bộ giải mã dựa trên Rust
- Nhóm Firefox lo ngại về rủi ro bảo mật của bộ giải mã libjxl viết bằng C++ của JPEG XL và cho rằng cần một phiên bản Rust “an toàn bộ nhớ”
- Theo đó, Google Research đã bắt đầu phát triển bản triển khai Rust jxl-rs
- Dự án này trở thành một bước đệm giúp tăng khả năng tích hợp JPEG XL an toàn trong trình duyệt
Động thái chấp nhận từ PDF Association
- CTO của PDF Association, Peter Wyatt, đã công bố ý định đưa JPEG XL vào đặc tả PDF như định dạng ảnh mặc định cho HDR
- Đây là yếu tố góp phần củng cố khả năng tiêu chuẩn hóa của JPEG XL trong lĩnh vực tài liệu và xuất bản
Những đặc điểm kỹ thuật chính của JPEG XL
- Hỗ trợ nén lại JPEG hiện có theo kiểu không mất dữ liệu, giúp giảm khoảng 30% dung lượng mà không suy giảm chất lượng
- Hỗ trợ dải màu rộng và HDR, có thể xử lý tối đa kênh 32 bit và 4.099 kênh
- Hỗ trợ kích thước ảnh tối đa 1,073,741,823×1,073,741,824, cho phép xử lý ảnh siêu lớn
- Hỗ trợ giải mã tiến dần (progressive decoding), cải thiện hiệu quả truyền tải trên web
- Bao gồm các tính năng animation, alpha transparency, depth map
- Có cấu trúc chống suy hao qua nhiều thế hệ, giúp giảm thiểu mất chất lượng khi mã hóa lặp lại
Kết luận
- JPEG XL đáp ứng các yêu cầu của một định dạng ảnh thế hệ mới, và việc quay trở lại trong nhân Chrome là động lực mang tính quyết định cho sự phổ biến đại chúng
- Sau áp lực dài hạn từ cộng đồng, định dạng này đang nổi lên như một ứng viên tiêu chuẩn mới cho hệ sinh thái ảnh trên web
- Tác giả hoan nghênh việc Chromium đánh giá lại, nhưng cũng chỉ ra rằng quyết định này đã được đưa ra quá muộn
2 bình luận
2022-09-04 Show GN: J40: Bộ giải mã JPEG XL
2022-11-02 Google Chrome dự kiến sẽ ngừng hỗ trợ JPEG-XL từ phiên bản 110
2023-07-22 JPEG XL: Khởi đầu và tình hình hiện tại
2024-04-05 Jpegli - Thư viện mã hóa JPEG mới do Google tạo ra
2024-09-21 Vì sao Apple dùng JPEG XL trên iPhone 16 và tác động của nó đến ảnh chụp
Ý kiến trên Hacker News
Một trong những tính năng hay nhưng ít được biết đến của JPEG XL là chế độ transcode không mất dữ liệu từ JPEG, giúp tiết kiệm khoảng 20% dung lượng lưu trữ
Vì giữ nguyên bitstream entropy gốc nên nó hoàn toàn có thể đảo ngược
GCP đang áp dụng điều này vào DICOM Store API, nên có thể tận dụng mức tiết kiệm dung lượng của JXL mà vẫn cung cấp bằng cách chuyển đổi sang JPEG theo thời gian thực
Công ty chúng tôi lưu trữ dữ liệu ở quy mô hàng chục PB trên GCP DICOM Store, nên kỳ vọng tính năng này sẽ giúp giảm đáng kể chi phí hằng năm
Cũng hy vọng có hỗ trợ native trên trình duyệt, và tôi đã nghe nói đội Chrome cuối cùng cũng sẽ hỗ trợ
Không rõ nó là PACS hoàn chỉnh, triển khai WADO, hay chỉ là một API tùy biến đơn giản
Tôi muốn hỏi liệu thời gian xử lý có tốn nhiều không
Có vẻ phần lớn chi phí lưu trữ vẫn là ở chính DICOM
Đối thủ của JPEG XL không phải AVIF
AVIF đã trở thành chuẩn de facto, gần như mọi trình duyệt đều hỗ trợ, và còn được dùng làm định dạng ảnh mặc định của Apple
JXL tuy vẫn yếu về hỗ trợ trên trình duyệt, nhưng đang dần có chỗ đứng ở các thị trường ngách như lưu trữ bảo tồn, ảnh chuyên nghiệp, y tế
Khoảng 10 năm nữa, có thể nó sẽ phổ biến đến mức mọi người đơn giản gọi nó là “JPEG”
AVIF là tiêu chuẩn mở, miễn phí bản quyền, có hiệu quả nén cao hơn nhiều so với JPEG/WebP, và cũng ở mức tương đương với JXL
JXL có kích thước ảnh tối đa lớn hơn, nhưng mức độ chấp nhận thực tế thì AVIF đi trước rất xa
Khi AV2 ra mắt, khoảng cách chất lượng gần như sẽ biến mất, và tôi nghĩ cả hai định dạng sẽ cùng phát triển trong khi giữ mức chất lượng tương tự nhau
Ở các thiết lập chất lượng thực tế, JXL cho tỷ lệ nén cao hơn cùng tốc độ mã hóa/giải mã nhanh hơn
Ngoài ra còn hỗ trợ progressive decoding
Có thể AV2 sẽ bắt kịp, nhưng hiện tại tôi nghĩ JXL đang vượt lên khá xa
Có vẻ lần xem xét lại này cũng liên quan đến quyết định khi đó
iPhone dùng HEIF
Để mã hóa ảnh độ phân giải cao, có lúc cần RAM ở mức terabyte
Tôi đã rất ngạc nhiên vì codebase khá lộn xộn, và nhiều tùy chọn không hoạt động đúng
Việc thử lại bằng jxl-rs là tín hiệu tích cực, nhưng vì vẫn là những nhà phát triển đó tham gia nên tôi vẫn theo dõi một cách thận trọng
Có khả năng Chromium sẽ dùng crate jxl-rs cho tính năng JPEG XL
Có vẻ họ định chờ đến khi nó đủ ổn định rồi mới tích hợp
Có thể xem issue liên quan ở đây
Họ đóng issue bất chấp sự phản đối của người dùng, và chỉ gần đây mới mở lại
Có lẽ là vì vấn đề PR hoặc bất mãn nội bộ
Việc giờ nó tiến triển tốt có thể chỉ là kết quả của may mắn
Tôi đã xem qua triển khai tham chiếu (C++) của JPEG XL, và ngay cả 2 năm trước chất lượng mã cũng không tốt
Nó tạo cảm giác rất dễ phát sinh vấn đề bảo mật
Bản Rust đang được phát triển, và Google cũng có kế hoạch dần thay tất cả decoder trong Chromium bằng Rust
Đây không chỉ là vấn đề riêng của JPEG XL
Độ phân giải tối đa của JPEG XL là 1,073,741,823 × 1,073,741,824, có thể biểu diễn ảnh siêu độ phân giải lên tới hàng trăm petabyte
Trên thực tế, ngay cả sau nén thì cũng vẫn ở mức hàng chục đến hàng trăm PB
Nếu có thể định nghĩa một ảnh khổng lồ như vậy chỉ bằng một lượng byte nhỏ, nó có vẻ cũng có thể trở thành vector tấn công DOS
Tôi định quy đổi sang số tờ A4 thì máy tính Gemini lại nhầm đơn vị và cho ra kết quả kỳ quặc
Tổng hợp các thảo luận HN trước đây
Chromium Team Re-Opens JPEG XL Feature Ticket
FSF Slams Google over Dropping JPEG-XL in Chrome
Google set to deprecate JPEG XL support in Chrome 110
Chromium jpegxl issue closed as won't fix
Tôi đã dùng .avif được vài năm rồi
Nó không hoàn hảo, nhưng tôi thấy vẫn tốt hơn nhiều so với .jpg hay .png
Tôi cũng từng cân nhắc .webp và jpeg-xl, nhưng cuối cùng vẫn hài lòng với .avif
Tuy vậy tôi không thích việc Google trên thực tế chi phối các tiêu chuẩn web
Việc một công ty thương mại kiểm soát hệ sinh thái số là điều không mong muốn
jpegli GitHub
Nếu chọn tốt thiết lập gần-lossless theo thị giác của AVIF thì có thể nhỏ hơn jpegli, nhưng trung bình thì jpegli hiệu quả hơn
Video liên quan: liên kết YouTube
Người loại bỏ JXL không phải là “toàn bộ Google” mà là đội Chrome
JXL do Jyrki Alakuijala ở Google Zurich thiết kế, và ông thuộc Google Research chứ không phải đội Chrome
Đội Chrome có văn hóa khép kín tập trung quanh Mountain View
Việc ông tạo jpegli sau khi JpegXL bị loại bỏ cũng là một dạng phản ứng
Có vẻ JXL bị chậm lại vì phụ thuộc C++ đa luồng khiến bề mặt tấn công bảo mật lớn hơn
Cả Mozilla lẫn Google đều muốn tránh điều đó nên ưu tiên triển khai bằng Rust
Bản thân tiêu chuẩn này rõ ràng là định dạng tốt hơn các định dạng cũ
Kích thước binary cũng nhỏ hơn AVIF rất nhiều, và đặc tả cũng ngắn gọn hơn nhiều
Nghe nói tệp RAW trên iPhone 17 Pro sẽ được nén bằng JPEG XL