Cách nén ảnh mà không làm giảm chất lượng
Bạn tải ảnh lên một trang web và bị từ chối — file quá lớn. Hoặc gửi một loạt ảnh sản phẩm cho khách hàng thì email bị trả lại. Phản xạ tự nhiên là mở trình chỉnh sửa ảnh, kéo thanh chất lượng xuống 60%, rồi chấp nhận kết quả mờ nhòe, vỡ pixel như một sự đánh đổi không thể tránh khỏi. Nhưng không cần phải vậy.
Hiểu tại sao ảnh lại nặng ngay từ đầu sẽ giúp bạn làm nhỏ file mà không phải trả giá bằng chất lượng. Có ba nguyên nhân chính, và mỗi nguyên nhân đòi hỏi cách xử lý khác nhau.
Điều gì thực sự làm cho file ảnh trở nên nặng
Kích thước pixel. Một bức ảnh 4000 × 3000 pixel chứa 12 triệu điểm ảnh. Nếu bạn chỉ hiển thị nó ở kích thước 800 × 600 trên web, bạn đang truyền tải lượng dữ liệu gấp 15 lần so với nhu cầu thực tế. Chỉ cần resize — trước khi đụng đến nén — đã có thể kéo một ảnh 4 MB xuống dưới 400 KB.
Định dạng file. PNG lưu từng pixel chính xác tuyệt đối, nên về bản chất nó sẽ nặng. Một file JPG chụp cùng một bức ảnh có thể chỉ bằng một phần năm dung lượng. WebP — định dạng do Google thiết kế — vượt JPG trên ảnh chụp và vượt PNG trên đồ họa, thường nhỏ hơn 25–35% so với JPG tương đương ở cùng chất lượng cảm nhận. Chọn sai định dạng lãng phí dung lượng nhiều hơn bất kỳ thanh trượt chất lượng nào.
Metadata. Mỗi bức ảnh điện thoại chụp đều nhúng dữ liệu Exif: tọa độ GPS, model máy ảnh, khẩu độ ống kính, timestamp, đôi khi cả ảnh thumbnail. Một block Exif thông thường chiếm 20–80 KB. Xóa nó đi và bạn không mất gì nhìn thấy được.
Lossy vs Lossless — «Không mất chất lượng» thực ra có nghĩa gì
Hai thuật ngữ này hay bị dùng nhầm, nên đáng để nói rõ.
Nén lossless giảm dung lượng file mà không bỏ đi bất kỳ dữ liệu nào. Giải nén file ra là bạn phục hồi từng pixel y hệt ban đầu. PNG dùng nén lossless nội bộ; bạn có thể đẩy mạnh hơn ở cấp độ nén (thiết lập effort của thuật toán deflate) để được file nhỏ hơn mà không có bất kỳ thay đổi pixel nào. Một số chế độ WebP cũng vậy.
Nén lossy loại bỏ những dữ liệu mà thị giác con người khó nhận ra — gradient màu tinh tế ở vùng phẳng, chi tiết tần số cao trong bóng tối. JPG luôn luôn là lossy. Cài đặt JPG chất lượng cao (85–92 trên thang 0–100) loại bỏ ít đến mức bạn thực sự không thấy sự khác biệt khi xem ở kích thước bình thường. File có thể nhỏ hơn đến 60%.
Vậy «nén mà không mất chất lượng» hoàn toàn khả thi — chỉ là nghĩa của nó khác nhau tùy từng loại file. Với ảnh chụp màn hình hay logo dạng PNG, nén lossless thực sự là có thể. Với ảnh chụp JPG, mục tiêu thực tế là nén lossy ở mức chất lượng đủ cao để đầu ra nhìn không khác bản gốc. Cả hai đều là thắng lợi thực sự — nhưng về mặt kỹ thuật chúng rất khác nhau.
Cách nén ảnh trên Filuni
Công cụ nén ảnh của Filuni chạy hoàn toàn trên trình duyệt — file của bạn không rời khỏi thiết bị, điều này quan trọng khi ảnh chứa thông tin nhạy cảm.
- Vào trang nén ảnh trên Filuni.
- Kéo thả file vào vùng tải lên, hoặc click để chọn từ máy. Bạn có thể thêm nhiều file cùng lúc (tối đa 10 file).
- Chọn chế độ nén. Với JPG và WebP sẽ có thanh trượt chất lượng; với PNG công cụ tự động áp dụng tối ưu hóa lossless.
- Nhấn Nén. Công cụ hiển thị dung lượng gốc, dung lượng sau nén, và phần trăm tiết kiệm được trước khi bạn tải về.
- Tải kết quả về. Nếu mức nén trông có vẻ hơi mạnh, kéo chất lượng lên và chạy lại — chỉ mất khoảng hai giây.
Không cần tài khoản, không watermark, không giới hạn hàng ngày. Đầu ra là file của bạn, không thêm gì khác.
Lời khuyên theo từng định dạng
JPG: tìm điểm ngọt trên thanh trượt chất lượng
Chất lượng JPG không tuyến tính. Sự khác biệt giữa 100 và 85 hầu như không ai nhận ra; giữa 85 và 70 thì thấy rõ hơn nhưng vẫn chấp nhận được với ảnh thumbnail web; dưới 60, hiện tượng vỡ khối (blocking artefact) bắt đầu xuất hiện quanh các cạnh và chữ. Với phần lớn mục đích sử dụng — ảnh trên web, đính kèm email, chia sẻ mạng xã hội — chất lượng 80–88 là vùng lý tưởng. Một file JPG xuất từ RAW nặng 5 MB thường về khoảng 600–900 KB ở chất lượng 85. Nghĩa là nhỏ hơn 80–85% mà không có sự mất mát nào nhìn thấy ở kích thước màn hình thông thường.
PNG: nén mạnh hơn, không phải mất chất lượng hơn
PNG không có cài đặt «chất lượng» theo kiểu JPG — nó luôn là lossless. Thứ thay đổi là mức effort nén (thuật toán deflate cố gắng đến đâu). Nhiều trình chỉnh sửa ảnh xuất ở effort thấp để nhanh hơn; một bộ tối ưu PNG chuyên dụng có thể cắt 20–40% mà pixel không đổi một chút. Nếu bạn đang nén ảnh chụp màn hình PNG và không cần transparency, hãy cân nhắc chuyển sang WebP — thường tiết kiệm hơn 50%.
Chuyển sang WebP — lợi ích lớn nhất trong một bước
Nếu bạn kiểm soát được nơi ảnh sẽ xuất hiện (website của bạn, tài liệu gửi đi), việc chuyển JPG hoặc PNG sang WebP trước khi nén thường là bước mang lại hiệu quả cao nhất. WebP hỗ trợ cả chế độ lossy lẫn lossless, xử lý transparency như PNG, và tạo ra file nhỏ hơn JPG tương đương 25–35% một cách nhất quán. Mọi trình duyệt hiện đại đều hỗ trợ WebP từ năm 2020. Với bất cứ thứ gì lên web, hiếm khi có lý do chính đáng để không dùng nó.
Công cụ chuyển đổi định dạng ảnh của Filuni hỗ trợ JPG, PNG, WebP, BMP, GIF và TIFF theo cả hai chiều, cũng miễn phí và xử lý ngay trên trình duyệt.
Thực tế có thể nén được bao nhiêu
Số liệu thực tế từ các tình huống phổ biến:
| Bản gốc | Định dạng/Cài đặt | Sau nén | Tiết kiệm |
|---|---|---|---|
| Ảnh điện thoại 4,8 MB (JPG) | JPG chất lượng 85 | ~720 KB | 85% |
| Ảnh điện thoại 4,8 MB (JPG) | WebP chất lượng 85 | ~480 KB | 90% |
| Ảnh chụp màn hình 1,2 MB (PNG) | PNG nén lại lossless | ~820 KB | 32% |
| Ảnh chụp màn hình 1,2 MB (PNG) | WebP lossless | ~390 KB | 68% |
| Ảnh sản phẩm 600 KB (JPG) | JPG chất lượng 82 + xóa Exif | ~140 KB | 77% |
Dòng screenshot chuyển sang WebP đáng chú ý: nhỏ hơn 68% mà không có bất kỳ thay đổi hình ảnh nào, vì chế độ lossless của WebP xử lý các vùng màu phẳng đặc trưng của ảnh chụp màn hình UI hiệu quả hơn nhiều so với thuật toán deflate của PNG.
Một lưu ý: ảnh rất nhỏ (dưới ~20 KB) đã gần chạm đến giới hạn tối thiểu. Chi phí overhead của quá trình nén đôi khi còn làm file to hơn. Không đáng lo — nếu vậy thì tải về bản gốc là xong.
Câu hỏi thường gặp
Lossless có thực sự là không mất chất lượng gì không?
Đúng — theo nghĩa toán học. Một file PNG hoặc WebP được nén lossless khi giải mã ra sẽ cho lưới pixel giống bit-for-bit so với bản gốc. Không có bất kỳ suy giảm nào dù bạn nén và giải nén bao nhiêu lần. Các định dạng lossy (JPG, WebP lossy) thì có suy giảm, đó là lý do bạn nên nén một lần từ bản gốc thay vì nén đi nén lại từ file đã qua nén.
Nên dùng cài đặt chất lượng bao nhiêu cho JPG trên website?
80–85 là câu trả lời phổ biến, nhưng hãy thử nghiệm trên ảnh của bạn. Ảnh hero trải dài hết chiều rộng màn hình xứng đáng được đặt cao hơn một chút (85–90) vì artefact dễ thấy khi kích thước lớn. Thumbnail và ảnh card thì 75–80 là ổn. Dưới 70 chỉ phù hợp khi dung lượng thực sự là ưu tiên tuyệt đối — mạng di động chậm, email số lượng lớn — và ảnh không phải trọng tâm của trang.
Xóa dữ liệu Exif có gây vấn đề gì không?
Với ảnh web, gần như không bao giờ. Trường hợp duy nhất Exif có ý nghĩa là khi bạn cần tọa độ GPS cho ứng dụng bản đồ, hoặc color profile (ICC profile) cho công việc in ấn. Với ảnh mạng xã hội, ảnh đại diện, ảnh sản phẩm và dùng web nói chung, xóa Exif là an toàn và giảm được 20–80 KB mỗi ảnh.
WebP đã được hỗ trợ ở mọi nơi chưa?
Rồi, với mục đích web. Chrome, Firefox, Safari (từ năm 2020), Edge và tất cả trình duyệt di động hiện đại đều hỗ trợ WebP. Nếu bạn đang xây dựng website ngày nay, WebP là lựa chọn an toàn mặc định. Ngoại lệ duy nhất là các ngữ cảnh cũ như email client rất cũ hoặc phần mềm desktop hiển thị ảnh — trong những trường hợp đó, JPG vẫn là lựa chọn chắc chắn hơn.
Dùng thử các công cụ miễn phí của Filuni
Mọi thứ trong bài viết này — cùng hơn 120 công cụ khác. Miễn phí, không cần đăng ký, ngay trên trình duyệt.