← Về trang blog

Top Công cụ Nén PNG Không Mất Giá: Phân biệt 'Thật Không Mất' và 'Có Vẻ Không Mất'

Khi tìm kiếm 'nén PNG', các công cụ hàng đầu đều tự nhận là 'không mất chất lượng' nhưng tỷ lệ nén lại chênh lệch nhau nhiều: một cái tiết kiệm 70%, một cái chỉ tiết kiệm 10%. Sự khác biệt nằm ở chỗ 'không mất' mà họ nói là không giống nhau. Bài viết này sẽ làm rõ sự khác biệt này và giới thiệu công…

Chia sẻ

Khi tìm kiếm "nén PNG", các công cụ đứng đầu đều tự nhận là "không mất chất lượng" nhưng tỷ lệ nén lại chênh lệch nhau nhiều: một cái tiết kiệm 70%, một cái chỉ tiết kiệm 10%.
Sự khác biệt nằm ở chỗ "không mất" mà họ nói là không giống nhau.
Bài viết này sẽ làm rõ sự khác biệt này và giới thiệu công cụ theo ngữ cảnh sử dụng.


Đầu tiên, phân biệt: Hai loại "Không mất"

Không mất thật sự: Không một pixel nào thay đổi

PNG vốn là định dạng không mất chất lượng, kích thước của nó do hai phần quyết định: cách sắp xếp và nén Deflate của dữ liệu pixel, và bao nhiêu siêu dữ liệu đi kèm trong file.

Nén không mất thật sự chỉ tập trung vào hai chỗ này:

  • Thay đổi cách lưu trữ tiết kiệm không gian hơn. Ví dụ, hình chỉ thực sự dùng 200 màu, chuyển sang chế độ bảng màu; không có độ trong suốt, loại bỏ kênh Alpha; hình xám lưu theo độ xám.
  • Thử nghiệm bộ lọc và tham số Deflate tốt hơn. Với cùng một pixel, cách mã hóa khác nhau thì kích thước nén có thể chênh lệch nhiều. Các công cụ thiết kế khi xuất PNG thường không cố gắng nghiêm túc.
  • Loại bỏ siêu dữ liệu. Thông tin phần mềm xuất, dấu thời gian, ghi chú văn bản, ảnh thu nhỏ, v.v.

Sau khi nén, hình giải mã ra sẽ hoàn toàn giống原图 từng pixel. Chi phí là tiết kiệm không nhiều — nó chỉ có thể chắt lọc phần "làm nén không nghiêm túc".

"Có vẻ không mất": Thực ra là lượng hóa mất chất

Các công cụ như TinyPNG, pngquant tiết kiệm được nhiều hơn là vì chúng làm việc khác: giảm số lượng màu PNG xuống dưới 256 màu (lượng hóa), sau đó kết hợp nhiễu để mắt thường không nhận ra.

Đây là mất chất lượng, pixel đã thay đổi. Với phần lớn biểu tượng trang web, tranh minh họa thì hiệu quả tốt, cũng đáng dùng; nhưng nếu bạn cần "pixel tuyệt đối không đổi" — như cắt UI phải khớp nghiêm ngặt với bản thiết kế, chụp màn hình cần so sánh từng pixel, tài liệu sau đó cần chỉnh sửa lại — thì không nên dùng nó.

Cách đơn giản nhất để xác định một công cụ có thực sự không mất hay không: so sánh trước và sau nén bằng ImageMagick
compare -metric AE 原图.png 压缩后.png null:
Nếu đầu ra là 0 nghĩa là không một pixel nào thay đổi.


Giới thiệu công cụ PNG không mất thật sự

Dòng lệnh: oxipng (Khuyên dùng)

oxipng là bộ tối ưu hóa PNG không mất chất lượng được viết bằng Rust, có thể coi là người kế nhiệm hiện đại của công cụ lâu đời OptiPNG:

  • Hỗ trợ đa luồng, tốc độ nhanh, phù hợp xử lý hàng loạt.
  • Điều chỉnh sức mạnh nén từ -o 0 đến -o 6 (và -o max), mức càng cao càng chậm nhưng nén càng nhiều.
  • Có tùy chọn --zopfli để nén thêm, nhưng sẽ chậm hơn nhiều.
  • Nén không mất chất lượng PNG của Squoosh cũng dùng nó.

bash
brew install oxipng
oxipng -o 2 --strip safe -r ./images # Xử lý thư mục đệ quy, chỉ loại bỏ siêu dữ liệu không ảnh hưởng hiển thị

Dòng lệnh: zopflipng (Tối đa hóa kích thước tối thiểu)

Sản phẩm của Google, sử dụng thuật toán Zopfli để nén lại Deflate, thường có thể nén thêm một chút so với mức mặc định của oxipng, nhưng chậm hơn rất nhiều, ảnh lớn có thể chạy lâu. Phù hợp cho tài nguyên tĩnh "nén một lần, dùng lâu" như logo trang web, biểu tượng tích hợp trong App.

Dòng lệnh: OptiPNG, pngcrush (Lâu đời)

Cả hai đều là bộ tối ưu hóa PNG không mất chất lượng kinh điển, vẫn còn thấy trong nhiều chuỗi công cụ. Về chức năng đã được oxipng bao phủ cơ bản, các dự án mới không cần chọn chúng.

Trang web: Squoosh

Công cụ trực tuyến của Google, chọn trình mã hóa OxiPNG cho PNG sẽ là không mất chất lượng (lưu ý không tick "Reduce palette", mục đó là giảm màu mất chất).

Ưu điểm là không cần cài đặt, có thể so sánh bên trái phải; nhược điểm là chỉ xử lý được một ảnh mỗi lần, cần tải về và tự đổi tên, thay thế. Phù hợp nén vài tấm khi cần thiết.

Giao diện Mac: ImageOptim

Công cụ Mac lâu đời miễn phí và mã nguồn mở, tích hợp bên trong nhiều bộ tối ưu hóa như oxipng, Zopfli, pngcrush để thử lần lượt lấy kết quả nhỏ nhất. Mặc định là chế độ không mất chất lượng (tùy chọn mất chất cần bật thủ công).

Nó nén mạnh, nhưng khi bật hết các bộ tối ưu hóa thì tốc độ khá chậm; và nó sẽ ghi đè trực tiếp lên file gốc, nên nên sao lưu một bản trước khi nén.

Giao diện Mac: ImgZilla

ImgZilla là công cụ nén ảnh macOS mà chúng tôi làm. Cách xử lý PNG của nó rất trực tiếp:

  • Sử dụng oxipng để nén không mất chất, mức nén là 2 (khớp với mặc định của Squoosh), lấy cân bằng giữa tốc độ và kích thước. Không một pixel nào thay đổi, bạn có thể xác minh bằng lệnh compare ở trên.
  • Không lượng hóa, không giảm màu, không chuyển định dạng, không đổi kích thước. PNG sau nén vẫn là PNG.
  • Nén tại chỗ: Tên file và đường dẫn không đổi, code, tài liệu tham khảo không cần chỉnh sửa.
  • Kéo cả thư mục vào: Quét đệ quy thư mục con, tự động bỏ qua file ẩn và node_modules; JPG, GIF, WebP, HEIC, AVIF, SVG cũng có thể xử lý cùng lúc.
  • Ảnh gốc được chuyển vào thùng rác theo mặc định, nếu không hài lòng hãy chuột phải "Hoàn tác".
  • Không ép nén nếu không cần thiết: Các file có tỷ lệ nén dưới 0,4% sẽ được đánh dấu "Đã tối thiểu", giữ nguyên, không tính vào hạn mức miễn phí.
  • Chạy hoàn toàn trên máy cục bộ, tài liệu nguyên liệu không được tải lên bất kỳ máy chủ nào.

Có hai điểm cần làm rõ:

  • Nó không ép PNG về kích thước tối thiểu. Mức 2 nhanh hơn nhiều so với -o max hoặc Zopfli, nhược điểm là có thể ít tiết kiệm vài phần trăm. Nếu nhu cầu của bạn là "nén một logo đến cuối byte", thì zopflipng hoặc ImageOptim phù hợp hơn.
  • Mặc định sẽ loại bỏ tất cả siêu dữ liệu trong PNG, bao gồm hồ sơ màu. Ảnh sRGB thông thường không bị ảnh hưởng; nhưng nếu ảnh nhúng hồ sơ màu Display P3 (thường thấy khi chụp màn hình Mac, xuất từ phần mềm thiết kế), sau khi loại bỏ màu có thể có sự thay đổi nhẹ trong phần mềm quản lý màu. Đối với ảnh yêu cầu màu sắc nghiêm ngặt, bạn có thể bật "Giữ lại thông tin EXIF" trong cài đặt, siêu dữ liệu sẽ được giữ nguyên.

Tóm tắt bằng bảng

Công cụ Loại Có thực sự không mất Hàng loạt Phù hợp với ai
oxipng Dòng lệnh ✅ ✅ Nhà phát triển, quy trình xây dựng
zopflipng Dòng lệnh ✅ Cần viết script riêng Tối đa hóa kích thước tối thiểu, không quan tâm tốc độ
OptiPNG / pngcrush Dòng lệnh ✅ ✅ Dự án cũ sử dụng tiếp
Squoosh Trang web ✅ (OxiPNG, không tick giảm màu) ❌ Một ảnh mỗi lần Nén vài tấm khi cần
ImageOptim Ứng dụng Mac ✅ (Mặc định) ✅ Người dùng Mac muốn sức mạnh nén lớn nhất
ImgZilla Ứng dụng Mac ✅ ✅ Kéo thư mục Muốn nén hàng loạt, không muốn đổi đường dẫn, muốn có thể hoàn tác
TinyPNG / pngquant Trang web / Dòng lệnh ❌ Lượng hóa mất chất Tùy phiên bản Có thể chấp nhận giảm màu, muốn nén càng nhỏ càng tốt

Lựa chọn như thế nào

  • Chỉ cần pixel không đổi, sẵn sàng gõ lệnh: oxipng, đưa vào kịch bản xây dựng, giải quyết vĩnh viễn.
  • Muốn nén từng file về mức tối đa: zopflipng.
  • Xử lý hàng loạt trên Mac bằng giao diện: ImageOptim nén mạnh hơn; ImgZilla nhanh hơn, ảnh gốc có thể lấy lại từ thùng rác, và có thể xử lý thêm các định dạng khác.
  • Có thể chấp nhận mất chất nhẹ, muốn nhỏ hơn: TinyPNG / pngquant, nhưng hãy rõ ràng rằng điều này không còn là không mất chất nữa.

Lưu ý cuối cùng: Mức tiết kiệm của nén không mất chất phụ thuộc vào cách xuất PNG ban đầu. Các PNG xuất trực tiếp từ công cụ thiết kế, chưa từng được xử lý thường có nhiều "nước"; PNG đã được tối ưu hóa rồi thì nén thêm cũng không chắt lọc được nhiều — nếu công cụ báo "Đã tối thiểu", nghĩa là nó đã tốt, không phải là công cụ yếu.

ImgZilla hiện chỉ hỗ trợ macOS (12.3 trở lên), có thể tải từ Mac App Store. Phiên bản miễn phí cho phép nén 10 tấm mỗi ngày, chỉ tính vào hạn mức khi nén thành công — chỉ cần kéo một thư mục đầy PNG vào, sau đó dùng compare để xác minh xem pixel có thực sự không đổi hay không.
}

Muốn ảnh nhẹ hơn và nhanh hơn?

Tải ImgZilla và nén ngay trên máy — ảnh của bạn không bao giờ rời khỏi Mac.