Phiên bản ngắn là, nếu bạn muốn có hình ảnh 100x100 ở định dạng PNG, dòng bạn có sẽ cung cấp cho bạn chất lượng tốt nhất ở kích thước tệp nhỏ nhất. Bạn không thể làm tốt hơn điều đó nếu không có a) mã hóa thành định dạng bị mất (JPEG) hoặc b) giảm độ sâu màu của hình ảnh.
Để có giải thích dài hơn một chút, ngay từ Wikipedia: "Dots per inch (DPI) là thước đo mật độ in hoặc điểm ảnh không gian, cụ thể là số chấm riêng lẻ có thể được đặt trong một dòng trong khoảng 1 inch (2,54 cm) Giá trị DPI có xu hướng tương quan với độ phân giải hình ảnh nhưng chỉ liên quan chỉ gián tiếp. "
DPI không liên quan gì đến việc có kích thước tệp nhỏ hơn; hình ảnh 100x100 của bạn đo 100x100 pixel, bất kể bạn có nhìn thấy nó trên màn hình 300dpi hay 96dpi (màn hình sẽ trông nhỏ hơn trên màn hình 300dpi). Lượng thông tin cũng giống nhau.
"mật độ" sẽ không giúp ích gì vì nó chỉ hoạt động khi "mã hóa hình ảnh raster trong khi hiển thị (đọc) định dạng vectơ như Postscript, PDF, WMF và SVG thành hình ảnh raster". Các định dạng này là độc lập với độ phân giải, do đó, bạn nên nói với ImageMagick DPI mà bạn muốn hình ảnh bị rasterized. Tuy nhiên, DPI của bạn phải là một chức năng của thiết bị đầu ra bạn định sử dụng. Trong trường hợp của bạn, kể từ khi bạn bắt đầu với một hình ảnh đã được rasterized, điều này đã không sử dụng.
PNG là định dạng không mất dữ liệu, vì vậy thông số -quality chỉ kiểm soát mức nén zlib; bất kỳ lợi ích nào trong kích thước hình ảnh sẽ là tối thiểu, nhưng nó có giá trị sử dụng.
Không được thử nghiệm: chuyển đổi myimage.png -units PixelsPerInch -density 96x96 -quality 100 -resize 100 PNG8: mynewimage.png – StackOverflowNewbie