← Về trang blog

ImgZilla 1.3 chính thức ra mắt: Một công cụ “nén tại chỗ”, vì sao làm lâu đến vậy

Hôm nay, ImgZilla 1.3 chính thức có mặt trên Mac App Store. Chức năng cốt lõi của nó rất rõ ràng: nén ảnh ngay tại chỗ trên Mac — tên tệp, đường dẫn, định dạng đều không đổi, ảnh gốc mặc định được đưa vào thùng rác và có thể khôi phục bất cứ lúc nào. Mọi thao tác này đều diễn ra ngay trên chiếc Mac của bạn...

Chia sẻ

Hôm nay, ImgZilla 1.3 chính thức có mặt trên Mac App Store.

Chức năng cốt lõi của nó rất rõ ràng: nén ảnh ngay tại chỗ trên Mac — tên tệp, đường dẫn, định dạng đều không đổi, ảnh gốc mặc định được đưa vào thùng rác và có thể khôi phục bất cứ lúc nào.

Mọi thao tác này đều diễn ra ngay trên chiếc Mac của bạn, không cần kết nối mạng, ảnh không rời khỏi máy tính và không được tải lên bất kỳ máy chủ nào — quyền riêng tư và an toàn dữ liệu là thiết kế nền tảng ngay từ đầu.

Chức năng này trông có vẻ đơn giản, nhưng chúng tôi đã thử nghiệm, đập đi xây lại và làm lại rất nhiều lần. Bài viết này muốn ghi lại không phải “chúng tôi đã làm tính năng gì”, mà là những vấn đề cụ thể gặp phải trong các tình huống sử dụng thực tế, và hình dạng cuối cùng sau khi thay đổi.


Bốn chữ “nén tại chỗ” không thể lơ là

Hầu hết các công cụ nén ảnh đều lưu kết quả thành photo-min.jpg — an toàn nhưng cũng để lại phiền phức cho bạn: tên tệp đã đổi, tham chiếu trong bảng sản phẩm, đường dẫn trong mẫu web, thứ tự sắp xếp trong thư mục lưu trữ đều phải đổi theo.

ImgZilla chọn con đường khác: kết quả nén được ghi trực tiếp vào đường dẫn gốc, tên tệp gốc, định dạng gốc. JPG nén xong vẫn là JPG, không cần sửa một dòng tham chiếu nào.

Cái giá phải trả là: công cụ này đụng vào tệp gốc của người dùng. Chỉ cần sai một bước, thứ mất đi không phải bộ nhớ đệm, mà là những tấm ảnh người ta chụp cả ngày, bộ sưu tập gom góp nhiều năm.

Vì vậy, nơi sản phẩm thực sự tốn thời gian chưa bao giờ là bản thân việc nén — việc nén đã có các bộ mã hóa trưởng thành lo — mà là vòng bảo vệ xung quanh chữ “lỡ như”. Những cải tiến dưới đây đều là những gì thực sự gặp phải trong quá trình thử nghiệm.


Những điều đã thay đổi trong quá trình thử nghiệm

1. Chiến lược bảo vệ ảnh gốc từng bị đập đi làm lại một lần

Thiết kế ban đầu là sao chép ảnh gốc vào một thư mục sao lưu riêng. Logic thì không sai, nhưng dùng lại thấy gượng: thư mục sao lưu âm thầm phình to, người dùng nén mấy tháng mới phát hiện trên đĩa có thêm một bản sao đầy đủ, trong khi điều họ muốn làm lúc đầu chính là tiết kiệm dung lượng.

Cách làm hiện tại là ưu tiên dùng thùng rác: khi nén thành công, ảnh gốc được đưa vào thùng rác hệ thống trước, sau đó kết quả nén mới được ghi trở lại đường dẫn gốc.

Cách khôi phục trở thành thao tác mà mọi người dùng Mac đều đã biết — mở thùng rác, nhấp chuột phải “Đưa trở lại”. Không cần học khái niệm mới, cũng không có thư mục ẩn ngày càng phình to. Tùy chọn này được bật mặc định trong cài đặt; tắt nó nghĩa là ghi đè trực tiếp và không thể khôi phục, nên khi tắt sẽ có hộp thoại xác nhận lần hai.

2. Cái hộp thoại trên ổ cứng ngoài bị quá trình thử nghiệm ép ra

Khi thử nghiệm trên ổ di động, NAS, ổ mạng, chúng tôi gặp một vấn đề phổ biến trên macOS: những vị trí này thường không thể chuyển tệp vào thùng rác.

Cách xử lý ở bản đầu tiên là báo lỗi và bỏ qua — kết quả là người dùng kéo cả một thư mục vào, chẳng có gì xảy ra.

Cách xử lý hiện tại là: quá trình nén tạm dừng, hiện hộp thoại cho bạn quyết định:

  • Chọn một thư mục sao lưu: ảnh gốc được sao chép vào đó, rồi ghi đè lên ảnh gốc;
  • Bỏ sao lưu: sau khi xác nhận lần hai sẽ ghi đè trực tiếp, không giữ bản sao;
  • Đóng hộp thoại: coi như hủy, toàn bộ tác vụ bị ngừng.

Còn một chi tiết được thêm vào trong quá trình thử nghiệm: lựa chọn của bạn sẽ áp dụng cho tất cả các tệp còn lại trong lần này, nếu không 500 tấm ảnh sẽ hiện 500 lần hộp thoại liên tiếp — bản đầu tiên đúng như vậy, tự dùng một lần là không chịu nổi.

Thư mục sao lưu được chọn sẽ được ghi nhớ làm vị trí sao lưu mặc định (tạo thư mục con theo thời gian trong ~/Library/Application Support/ImgZilla Backups/), ưu tiên dùng khi gặp tình huống tương tự về sau.

3. “Đã tối thiểu”: thà không làm gì còn hơn

Một số ảnh trước khi kéo vào đã bị nén (dù bằng công cụ khác hay từng được xử lý bằng ImgZilla trước đó), nén lại thường chỉ đem lại thay đổi kích thước vài phần nghìn. Chúng tôi đặt một quy tắc cứng cho việc này: nén không đạt 0,4% thì không đụng đến, đánh dấu trong danh sách là “Đã tối thiểu”, giữ nguyên tệp gốc và cũng không tốn hạn mức miễn phí.

Quy tắc này khiến con số thống kê trông kém đẹp — kéo cả một bộ sưu tập ảnh đã nén vào, có thể phần lớn đều hiện “Đã tối thiểu”. Nhưng chúng tôi cho rằng, một công cụ chỉ để khoe thành tích mà nén lại ảnh của bạn lần nữa thì không xứng đáng đụng vào tệp gốc của bạn.

4. Khi phần mở rộng đánh lừa

Trong mẫu thử nghiệm xuất hiện không ít tệp “đuôi ghi .png nhưng thực chất là JPEG” — ảnh trôi nổi từ nhiều nguồn, nhiều hơn tưởng tượng.

Giờ ImgZilla sẽ đọc magic byte ở đầu tệp để xác định định dạng thật, chọn bộ mã hóa theo định dạng thật. Đuôi viết sai vẫn xử lý đúng.

5. Xử lý tuần tự thay vì song song

Nén từng tấm theo thứ tự trông có vẻ “không đủ nhanh”. Chúng tôi đã thử song song, tốc độ đúng là tăng, nhưng khi tác vụ số lượng lớn gặp lỗi thì trạng thái trở nên khó truy vết — mà công cụ này đang ghi đè lên tệp gốc của người dùng.

Ổn định được ưu tiên hơn tốc độ tối đa, cuối cùng giữ lại xử lý tuần tự. Cần nói rõ rằng tuần tự nghĩa là xử lý từng tác vụ một, còn quá trình nén của mỗi ảnh do bộ mã hóa bên trong tận dụng đa luồng, không lãng phí sức mạnh đa nhân của CPU. Như phần bù về giao diện, chúng tôi làm những điều này: mục đang xử lý tự động cuộn vào vùng nhìn thấy, dừng tự động cuộn khi di chuột lên, thanh dưới hiển thị thời gian thực số ảnh đã xử lý và dung lượng tiết kiệm được, khi hoàn tất sẽ gửi thông báo hệ thống.

6. Khi hết hạn mức miễn phí, tác vụ “tạm dừng” chứ không “ngừng hẳn”

Bản miễn phí mỗi ngày nén được 10 tấm, tự đặt lại khi sang ngày mới. Trong thử nghiệm, chúng tôi nhận ra bị ngắt ở khoảnh khắc nào, trải nghiệm khác một trời một vực: nếu kéo vào 200 tấm, nén đến tấm thứ 10 thì thất bại và thoát thẳng, người dùng phải thêm lại toàn bộ tệp — vậy thì lời nhắc đó trở thành quấy rối thuần túy.

Hành vi hiện tại là: hết hạn mức, tác vụ tạm dừng tại chỗ, bật bảng mua; sau khi mua xong, tiếp tục nén phần còn lại từ điểm dừng, không cần thêm lại bất kỳ tệp nào. Ngoài ra, hạn mức chỉ bị trừ khi nén thành công — nén thất bại hoặc “Đã tối thiểu” đều không tính.

7. 19 tùy chọn ngôn ngữ và một đoạn kết không mấy nổi bật

Giao diện hỗ trợ đầy đủ 19 tùy chọn ngôn ngữ (gồm “Theo hệ thống”, Giản thể/Phồn thể Trung, English, 日本語, 한국어, cùng các ngôn ngữ châu Âu chính, العربية, Tiếng Việt v.v.), có thể chuyển bất cứ lúc nào trong cài đặt, chuyển xong có hiệu lực ngay, không cần khởi động lại.

Khối lượng công việc này vượt xa dự kiến, cũng là một trong những lý do thời điểm phát hành bị lùi. Nhưng với một công cụ lên kệ trên App Store toàn cầu, để người dùng nhìn thấy tiếng mẹ đẻ của họ là sự tôn trọng cơ bản nhất.


Về chất lượng ảnh: xin đừng tin chúng tôi, hãy tự xem

Điều khó xây dựng nhất trong chuyện nén ảnh chính là lòng tin. Nên chúng tôi nói rõ:

  • PNG (oxipng) và SVG (svgcleaner) là nén không mất dữ liệu thực sự, điểm ảnh không đổi;
  • JPEG, WebP, AVIF, HEIC/HEIF, GIF về nguyên tắc đều là tái mã hóa có mất dữ liệu, nhưng tham số được chọn trong vùng gần như không mất về mặt thị giác — mắt thường gần như không phân biệt được, nhưng nó không phải là “nén không mất dữ liệu”, chúng tôi sẽ không dùng lẫn hai từ này.

Hơn nữa, bạn không cần dựa vào lòng tin để chấp nhận câu này. ImgZilla tích hợp cửa sổ so sánh ảnh (⌘D): bên trái là trước khi nén, bên phải là sau khi nén, kéo đường phân cách ở giữa để so sánh trái phải, có thể phóng to về kích thước thực tế để so kỹ chi tiết. Mỗi tấm nén thành công trong danh sách đều có thể gọi so sánh chỉ bằng một cú nhấp.

Cảm thấy không ổn, hãy vào thùng rác đưa ảnh gốc trở lại. Lối thoát này luôn nằm đó.

Tham số là cố định, trên giao diện không có thanh trượt chất lượng. Đây là một sự đánh đổi rõ ràng: chỉnh tham số cần hiểu bảng lượng tử hóa, method mã hóa, speed và các khái niệm chuyên môn khác, chỉnh sai thì hoặc nén vô ích, hoặc nén vỡ nét. Chúng tôi đã làm việc này thay bạn — tham số của mỗi định dạng đều được tinh chỉnh riêng, kéo vào nhấn nén, nhận được chính là điểm cân bằng lý tưởng nhất của định dạng đó với tham số hiện tại.

Nếu bạn quen tự chỉnh tham số nén, chúng tôi vẫn khuyên bạn dùng thử ImgZilla trước — tham số đã được tinh chỉnh, có lẽ giúp bạn đỡ mất công thử sai nhiều lần.


Nó không làm gì

Những ranh giới cũng quan trọng không kém được viết ở đây, để bạn khỏi tải về rồi mới phát hiện:

  • Chỉ có macOS (12.3 trở lên). Không có bản Windows, không có bản iOS, không có bản web.
  • Không chuyển đổi định dạng. JPG nén xong vẫn là JPG, không trở thành WebP.
  • Không thay đổi kích thước. Không thu nhỏ độ phân giải, không cắt xén.
  • Không đảm bảo chắc chắn nén nhỏ hơn. Ảnh đã tối ưu rồi, rất có thể tấm nào cũng không nén thêm được, sẽ thành thật đánh dấu “Đã tối thiểu”.
  • EXIF mặc định bị gỡ bỏ (bao gồm vị trí GPS, tệp nhỏ hơn và bảo vệ quyền riêng tư tốt hơn). Nếu bạn cần giữ tham số chụp, bản quyền và cấu hình màu, hãy vào cài đặt bật thủ công “Giữ thông tin EXIF”.

Một điều nữa đáng nhấn mạnh riêng: mọi quá trình nén đều diễn ra ngay trên máy Mac của bạn. Ngoại trừ bước xác thực mua hàng của App Store, ImgZilla không cần kết nối mạng, ảnh không rời khỏi máy tính của bạn — không xếp hàng, không giới hạn số lượng, cũng không có chuyện “tải lên máy chủ của người khác”. Toàn bộ bộ mã hóa đều là thư viện tĩnh cục bộ đóng gói trong App.


Bây giờ có thể bắt đầu dùng

  • Bản miễn phí: mỗi ngày 10 tấm, tự đặt lại khi sang ngày mới, không cắt bớt tính năng.
  • Bỏ giới hạn: bản vĩnh viễn (mua một lần, không giới hạn số lượng) hoặc đăng ký theo tháng, giá hiển thị theo khu vực App Store của bạn. Đổi máy hoặc cài lại, chỉ cần nhấn “Khôi phục mua hàng”.

Cách dùng lần đầu được khuyến nghị: trước tiên kéo bừa một tấm ảnh bạn không để tâm lắm vào, nén xong nhấn “So sánh”, tự nhìn chất lượng ảnh một lần, rồi hãy quyết định có giao cả thư mục cho nó hay không.

Đây cũng là cách chúng tôi mong công cụ này được sử dụng — xác minh trước, rồi tin tưởng sau.

Có bất kỳ vấn đề hoặc góp ý nào, hãy qua menu “Trợ giúp → Phản hồi” để nói với chúng tôi. 1.3 là phiên bản có thể yên tâm sử dụng, nhưng rõ ràng nó sẽ không phải là phiên bản cuối cùng.


ImgZilla 1.3 hiện đã có mặt trên Mac App Store. Yêu cầu macOS 12.3 trở lên.

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.