2010-06-02 43 views
6

Tôi có hình ảnh 1000x1000 300dpi mà tôi cần chuyển đổi thành hình thu nhỏ 100x100 96dpi. Làm thế nào để làm điều này trong ImageMagick? Tôi sau khi kích thước tệp nhỏ nhất có thể ở chất lượng cao nhất có thể.Trợ giúp ImageMagick - cần thay đổi DPI

Làm một cái gì đó như thế này:

convert myimage.png -quality 100 -resize 100 PNG8:mynewimage.png 

.... làm thay đổi kích thước, nhưng vẫn duy trì DPI. Nếu tôi có thể thay đổi thành 96dpi, tôi nên tải kích thước tệp nhỏ hơn.

Tôi đã thử -density, vv, nhưng dường như không thể làm cho họ làm việc cho tôi. Có lẽ tôi đặt các lệnh theo thứ tự sai hoặc truyền các thông số sai. Bất kỳ trợ giúp được đánh giá rất cao. Cảm ơn.

+0

Không được thử nghiệm: chuyển đổi myimage.png -units PixelsPerInch -density 96x96 -quality 100 -resize 100 PNG8: mynewimage.png – StackOverflowNewbie

Trả lời

5

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.

+0

Thực ra, tùy chọn '-density' tạo sự khác biệt cho người xem hỗ trợ nó. Có thể điều này đã thay đổi kể từ khi câu hỏi được trả lời, nhưng theo [tài liệu] (http://www.imagemagick.org/script/command-line-options.php#density): "Tùy chọn' -density' đặt * thuộc tính * và không làm thay đổi hình ảnh raster cơ bản. " Nếu bạn đang mở hình ảnh trong trình xem/công cụ như Corel Draw, nó sẽ tính thuộc tính này khi xác định cách hiển thị hình ảnh liên quan đến canvas hiện tại 'DPI. –

Các vấn đề liên quan