HEIC là gì, và nên giữ HEIC hay JPEG?
Điện thoại lưu ảnh thành file .heic mà laptop của tôi chẳng mở được. Đó là gì và tôi có cần nó không?
HEIC là viết tắt của cái gì
HEIC thường được hiểu là High Efficiency Image Container. Phần mở rộng .heic chỉ một tệp ảnh thuộc họ HEIF, mà pixel bên trong thường được mã hoá bằng HEVC. Trong đời sống hằng ngày, người ta nói HEIC khi muốn nói tới tệp ảnh của iPhone, dù HEIF mới là chuẩn định dạng chứa còn HEVC thường là codec nén nằm bên trong nó.
Sự phân biệt đó giải thích vì sao đổi .heic thành .jpg không chuyển đổi được tấm ảnh. Phần mở rộng chỉ là một cái nhãn; phần mềm vẫn tìm thấy cấu trúc HEIF và dữ liệu ảnh nén bằng HEVC ở bên trong. Một cuộc chuyển đổi thật sự phải giải mã đám pixel đó rồi mã hoá ra một tệp JPEG, PNG hoặc WebP mới.
HEIC là định dạng chứa, không phải codec
Một tệp .heic là một tệp HEIF: High Efficiency Image File Format, chuẩn hoá thành ISO/IEC 23008-12. HEIF là một định dạng chứa dựng trên cùng cấu trúc tệp ISO base media mà MP4 dùng. Nó quy định cách sắp xếp ảnh, ảnh thu nhỏ, bản đồ chiều sâu, chuỗi ảnh và siêu dữ liệu bên trong một tệp — nó không quy định cách mã hoá pixel.
Trong các tệp mà iPhone tạo ra, pixel được mã hoá bằng HEVC, còn gọi là H.265, codec video được chuẩn hoá thành ITU-T H.265. Đó là nguồn gốc của cả ưu điểm lẫn rắc rối của định dạng này: thực chất bạn đang lưu một tấm ảnh dưới dạng một khung hình đơn của một codec video hiện đại.
Vì sao điện thoại chọn nó
HEVC có những công cụ dự đoán trong khung hình mà thiết kế năm 1992 của JPEG không có, nên với cùng chất lượng thị giác nó thường cần ít bit hơn. Dung lượng lưu trữ trên điện thoại thì hữu hạn còn thư viện ảnh thì không, nên phần tiết kiệm đó đáng tiền thật với nhà sản xuất thiết bị. Định dạng chứa này cũng cho phép một tệp giữ nhiều ảnh liên quan — các khung của một loạt chụp liên tiếp, ảnh tĩnh và đoạn phim ngắn của một Live Photo, một kênh alpha hay kênh chiều sâu — thay vì rải chúng khắp một thư mục.
Còn một lợi ích thứ hai mà với một số người còn quan trọng hơn dung lượng: HEIF hỗ trợ hơn 8 bit mỗi kênh màu. Một tấm ảnh 10-bit có nhiều khoảng thở hơn hẳn ở các vùng chuyển màu, đó là lý do bầu trời và tông da chịu đựng việc hậu kỳ tốt hơn so với trong một tệp JPEG 8-bit.
Vì sao phần mềm khác của bạn không chịu mở nó
HEVC là một codec có bằng sáng chế, kèm nghĩa vụ bản quyền với bên làm bộ giải mã. Đó là chuyện pháp lý và thương mại chứ không phải chuyện kỹ thuật, và nó là lý do chính khiến mức độ hỗ trợ không đồng đều: có hệ điều hành đi kèm sẵn bộ giải mã, có hệ chỉ kèm khi máy có bộ giải mã phần cứng, và có trình duyệt giải mã được HEIC trong khi trình duyệt khác thì không. Một tệp mở được ngay lập tức trên chiếc điện thoại đã chụp nó lại có thể không đọc nổi trên một cái máy cách đó ba mét.
Đó là lý do FileSlimmer giải mã HEIC nhưng không bao giờ ghi ra HEIC. Việc chuyển đổi chạy ngay trong trình duyệt của bạn, dùng bộ giải mã của nền tảng khi có, và dùng một bộ giải mã WebAssembly tự lưu trữ khi không có, còn đầu ra là JPEG, PNG hoặc WebP — những định dạng mà phần mềm bên nhận thực sự mở được.
HEIC so với JPEG, nói thẳng
| Đặc điểm | HEIC, tức HEIF với HEVC | JPEG |
|---|---|---|
| Dung lượng ở chất lượng tương đương | Thường nhỏ hơn | Thường lớn hơn |
| Độ sâu bit | 8 hoặc 10 bit mỗi kênh màu | 8 bit mỗi kênh màu |
| Nền trong suốt | Có hỗ trợ | Không hỗ trợ |
| Nhiều ảnh trong một tệp | Có hỗ trợ | Không hỗ trợ |
| Mở được trên phần mềm lạ | Thường là không | Gần như luôn được |
| Bản quyền | Codec có bằng sáng chế | Trên thực tế không vướng bận |
Một tệp HEIC có thể đang giấu những gì
Vì định dạng chứa có thể giữ cả một tập hợp, một tệp .heic đơn lẻ có thể chứa nhiều hơn tấm ảnh bạn nhìn thấy. Một Live Photo mang theo một chuỗi ảnh ngắn bên cạnh ảnh tĩnh. Một tấm chân dung có thể mang theo bản đồ chiều sâu. Một loạt chụp liên tiếp có thể mang theo nhiều khung hình với một khung được đánh dấu là ảnh chính. Chuyển sang JPEG sẽ cho ra một ảnh phẳng duy nhất, nên mọi thứ mà định dạng chứa mang theo bên cạnh ảnh chính đều không có trong đầu ra.
Hướng ảnh đáng được nhắc riêng. HEIC ghi lại độ xoay dưới dạng siêu dữ liệu, y hệt JPEG. Một trình chuyển đổi bỏ qua điều đó sẽ cho ra những tấm ảnh nằm ngang. FileSlimmer áp hướng đã ghi vào chính pixel trong lúc chuyển đổi, nên tệp JPEG trông đúng như cách điện thoại đã hiển thị nó.
Vậy nên giữ bản nào?
- Giữ HEIC làm bản gốc nếu bạn ở lì trong một hệ sinh thái đọc được nó và bạn quý thư viện ảnh gọn hơn cùng độ sâu bit lớn hơn.
- Chuyển sang JPEG cho mọi thứ bạn gửi ra ngoài: một biểu mẫu tải lên, một dịch vụ in ảnh, một tệp đính kèm email, một đồng nghiệp dùng phần mềm không rõ là gì.
- Chỉ chuyển sang PNG khi bạn cần đầu ra không mất dữ liệu để chỉnh sửa; tệp sẽ lớn hơn đáng kể so với cả hai định dạng kia.
- Đừng chuyển HEIC sang JPEG rồi xoá bản HEIC, nếu bản HEIC là bản gốc duy nhất của bạn. Việc chuyển đổi là một lượt mã hoá lại có mất dữ liệu trên một tấm ảnh vốn đã mất dữ liệu.
Những giới hạn nên biết trước khi chuyển đổi
Chuyển đổi là một lượt nén mất dữ liệu thứ hai, nên vẫn mất đi một chút chất lượng ngay cả ở thiết lập cao. Nếu một trình duyệt hoàn toàn không giải mã được HEVC, và bộ giải mã dự phòng tự lưu trữ cũng không xử lý nổi một biến thể cụ thể — một profile bất thường, một tệp hỏng, một codec khác HEVC nằm trong cùng định dạng chứa — thì việc chuyển đổi thất bại chứ không cho ra thứ gì đó sai. FileSlimmer báo rõ tệp nào hỏng và vì sao, đồng thời để nguyên bản gốc.
Nếu bạn muốn chấm dứt chuyện này ngay từ đầu nguồn, phần lớn ứng dụng camera trên điện thoại đều có một thiết lập tương thích để chuyển việc chụp về lại JPEG. Bạn đánh đổi dung lượng lưu trữ để lấy khả năng đưa tệp cho bất kỳ ai.
Công cụ cho việc này
Nguồn tham khảo
- ISO/IEC 23008-12 — High Efficiency Image File Format
- ITU-T H.265 — High Efficiency Video Coding
- Nokia Technologies — HEIF technical overview