ImgZilla 1.3 chính thức phát hành: công cụ 'nén ảnh không mất dữ liệu tại chỗ', tại sao mất nhiều thời gian như vậy
ImgZilla đã 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 trên Mac ngay tại chỗ — tên file, đường dẫn, định dạng không đổi, ảnh gốc mặc định vào thùng rác, có thể khôi phục bất cứ lúc nào.
Tất cả các thao tác này đều được thực hiện hoàn toàn trên chính máy 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 của bạn, cũng không 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ế cơ bản ngay từ đầu.
Tính năng này trông có vẻ đơn giản, nhưng chúng tôi đã kiểm thử, lật lại và làm lại nhiều vòng. Bài viết này muốn ghi lại, không phải 'chúng tôi đã làm những 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 sửa đổi.
'Ghi đè tại chỗ' bốn chữ này, không thể lơ là
Hầu hết các công cụ nén ảnh sẽ lưu kết quả thành photo-min.jpg — an toàn, nhưng cũng để lại rắc rối cho bạn: tên file thay đổi, tham chiếu trong bảng sản phẩm, đường dẫn trong mẫu web, sắp xếp trong thư mục lưu trữ, tất cả đều phải sửa theo.
ImgZilla chọn một con đường khác: kết quả nén được ghi trực tiếp trở lại đường dẫn gốc, tên file gốc, định dạng gốc. JPG sau khi nén vẫn là JPG, không cần sửa một dòng tham chiếu nào.
Cái giá là: công cụ này can thiệp vào tập tin gốc của người dùng. Một khi có bước nào sai sót, mất không phải là bộ nhớ đệm, mà là những bức ảnh người ta chụp cả ngày, bộ sưu tập tích góp mấy năm trời.
Vì vậy, nơi sản phẩm thực sự dành thời gian, chưa bao giờ là bản thân việc nén — nén giao cho bộ mã hóa trưởng thành là đủ — mà là vòng bảo vệ xung quanh 'lỡ như'. Những cải tiến dưới đây đều là những tình huống thực tế gặp phải trong kiểm thử.
Những thứ đã thay đổi trong kiểm thử
1. Chiến lược bảo vệ ảnh gốc, đã 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 không có vấn đề, nhưng dùng lại khó chịu: thư mục sao lưu sẽ â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 hoàn chỉnh, trong khi điều muốn làm ban đầu chính là tiết kiệm dung lượng.
Cách làm hiện tại là ưu tiên thùng rác: khi nén thành công, ảnh gốc trước tiên được chuyển vào thùng rác hệ thống, sau đó ghi kết quả nén 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, chuột phải 'Đặt lại vị trí'. 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. Công tắc này được bật mặc định trong cài đặt; tắt đi sẽ ghi đè trực tiếp và không thể khôi phục, vì vậy khi tắt sẽ hiện xác nhận lần hai.
2. Cái pop-up trên ổ cứng ngoài, bị kiểm thử ép ra
Khi kiểm thử trên ổ di động, NAS, ổ mạng, chúng tôi gặp một vấn đề thường gặp trên macOS: những vị trí này thường xuyên không thể chuyển file vào thùng rác.
Cách xử lý của phiên bản đầu tiên là báo lỗi rồi bỏ qua — kết quả là người dùng kéo cả một thư mục vào, không có gì xảy ra.
Cách xử lý hiện tại: nén tạm dừng, pop-up hiện ra để bạn quyết định:
- Chọn một thư mục sao lưu: sao chép ảnh gốc vào đó, rồi ghi đè ảnh gốc;
- Bỏ sao lưu: sau xác nhận lần hai sẽ ghi đè trực tiếp, không giữ bản sao;
- Đóng pop-up: coi như hủy, toàn bộ tác vụ dừng lại.
Còn một chi tiết được thêm vào trong kiểm thử: lựa chọn của bạn sẽ áp dụng cho tất cả các file còn lại trong lần này, nếu không 500 bức ảnh sẽ hiện pop-up 500 lần liên tiếp — phiên bản đầu tiên chính là như vậy, tự dùng một lần đã không chịu nổi.
Thư mục sao lưu đã chọn sẽ được ghi nhận là vị trí sao lưu mặc định (tạo thư mục con theo thời gian trong
~/Library/Application Support/ImgZilla Backups/), các lần sau gặp tình huống tương tự sẽ ưu tiên sử dụng.
3. 'Đã tối thiểu': thà không làm gì
Một số ảnh trước khi được kéo vào đã bị nén (dù bằng công cụ khác hay trước đây đã được ImgZilla xử lý), nén lại thường chỉ đem lại thay đổi dung lượng vài phần nghìn. Chúng tôi đặt ra một quy tắc cứng: tỉ lệ nén không đủ 0,4% thì không động đến nó, đánh dấu trong danh sách là 'Đã tối thiểu', giữ nguyên file gốc, cũng không tiêu hao hạn mức miễn phí.
Quy tắc này sẽ khiến số liệu thống kê trở nên không đẹp mắt lắm — kéo cả một bộ sưu tập ảnh đã được nén vào, có thể phần lớn hiện 'Đã tối thiểu'. Nhưng chúng tôi cho rằng, một công cụ vì muốn thể hiện thành tích mà nén lại ảnh của bạn lần nữa, không đáng đặt trên file gốc của bạn.
4. Khi đuôi file lừa người
Trong mẫu kiểm thử từng xuất hiện không ít file 'đuôi ghi .png, thực ra là JPEG' — ảnh lưu truyền từ nhiều nguồn, nhiều hơn tưởng tượng.
Bây giờ ImgZilla sẽ đọc byte ma thuật ở đầu file để phán đoán định dạng thực, chọn bộ mã hóa theo định dạng thực. Đuôi file ghi sai, cũng có thể xử lý chính xác.
5. Xử lý tuần tự, thay vì song song
Nén từng tấm một theo thứ tự, trông có vẻ 'không đủ nhanh'. Chúng tôi đã thử xử lý song song, tốc độ quả thật tăng lên, nhưng trong tác vụ số lượng lớn khi xảy ra lỗi, trạng thái trở nên khó theo dõi — mà công cụ này đang ghi đè lên file gốc của người dùng.
Ổn định ưu tiên hơn tốc độ đỉnh, cuối cùng giữ lại xử lý tuần tự. Cần nói rõ, tuần tự nghĩa là xử lý từng tác vụ ảnh, còn quá trình nén mỗi bức ảnh bản thân nó được bộ mã hóa hoàn thành bằng đa luồng bên trong, không lãng phí năng lực đa nhân của CPU. Như phần bù trên 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, khi di chuột lên thì tạm dừng tự động cuộn, dưới cùng hiển thị thời gian thực số ảnh đã xử lý và dung lượng tiết kiệm được, sau khi hoàn tất gửi thông báo hệ thống.
6. Khi hết hạn mức miễn phí, tác vụ là 'tạm dừng' chứ không phải 'dừng hẳn'
Bản miễn phí mỗi ngày có thể nén 10 tấm, sang ngày tự động đặt lại. Trong kiểm thử chúng tôi phát hiện, bị ngắt vào lúc nào, trải nghiệm khác xa nhau: nếu kéo vào 200 tấm ảnh, nén đến tấm thứ 10 thì trực tiếp thất bại thoát ra, người dùng phải thêm lại toàn bộ file — thì cái thông báo đó 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ỗ, hiện bảng mua; sau khi mua xong, tiếp tục nén phần còn lại từ điểm ngắt, không cần thêm lại bất kỳ file 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 cái kết không mấy nổi bật
Giao diện hỗ trợ đầy đủ 19 tùy chọn ngôn ngữ (bao gồm 'Theo hệ thống', tiếng Trung giản thể và phồn thể, English, 日本語, 한국어, cùng các ngôn ngữ châu Âu chính, العربية, Tiếng Việt, v.v.), có thể chuyển đổi 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 phần này vượt xa dự kiến, cũng là một trong những lý do thời gian phát hành bị đẩy lùi. Nhưng với một công cụ có mặt trên App Store toàn cầu, để người dùng thấy được 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ự mình xem
Việc nén khó xây dựng nhất chính là lòng tin. Vì vậy 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 lý đều là mã hóa lại có tổn hao, nhưng tham số được chọn ở khoảng không tổn hao thị giác — mắt thường hầu như không phân biệt được, nhưng nó không phải '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 phải dựa vào lòng tin để chấp nhận câu này. ImgZilla tích hợp sẵn cửa sổ so sánh ảnh (⌘D): bên trái trước khi nén, bên phải 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 sánh kỹ chi tiết. Mỗi bức ảnh nén thành công trong danh sách đều có thể gọi ra so sánh chỉ bằng một cú nhấp.
Thấy không được, hãy vào thùng rác đưa ảnh gốc về chỗ cũ. Con đường rút lui này luôn có sẵn.
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: điều chỉnh tham số cần hiểu các khái niệm chuyên môn như bảng lượng tử hóa, phương pháp mã hóa, speed, v.v., chỉnh sai thì hoặc nén uổng công, hoặc nén mờ nhòe. Chúng tôi đã làm việc này thay bạn — tham số của mỗi định dạng đều được hiệu chỉnh riêng, kéo vào nhấn nén, đạt được chính là điểm cân bằng lý tưởng nhất của định dạng đó dưới tham số hiện tại.
Nếu bạn quen tự điều 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ẽ sẽ giúp bạn tiết kiệm công sức thử đi thử lại.
Nó không làm gì
Những ranh giới quan trọng không kém, viết ở đây, tránh để bạn tải về 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 biến 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 nhất định nén nhỏ đi được. Ảnh đã được tối ưu, rất có thể không nén được tấm nào, sẽ thành thật đánh dấu 'Đã tối thiểu'.
- EXIF mặc định bị loại bỏ (bao gồm vị trí GPS, file nhỏ hơn và bảo vệ quyền riêng tư hơn). Nếu bạn cần giữ lại thông số chụp, bản quyền và cấu hình màu sắc, hãy vào cài đặt bật thủ công 'Giữ thông tin EXIF'.
Còn một điều đáng nhấn mạnh riêng: tất cả việc nén đều được hoàn thành trên chính máy Mac của bạn. Ngoài việc xác minh 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ủ người khác'. 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 rồi
- Bản miễn phí: mỗi ngày 10 tấm, sang ngày tự động đặt lại, tính năng không bị cắt xén.
- Gỡ 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 tính hoặc cài lại, nhấn 'Khôi phục mua hàng' là được.
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 quá để tâm vào, nén xong nhấn 'So sánh', tự nhìn chất lượng ảnh, rồi quyết định có nên giao cả thư mục cho nó không.
Đây cũng là cách chúng tôi hy vọng công cụ này được sử dụng — kiểm chứng trước, tin tưởng sau.
Có bất kỳ vấn đề hay góp ý nào, hoan nghênh thông qua menu 'Trợ giúp → Phản hồi' cho chúng tôi biết. 1.3 là một 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.
Tải ngay -> App Store