Sự khác biệt đối với các toán tử sample / resample / scale / resize / adaptive-resize / thumbnail trong chuyển đổi ImageMagick là gì?


84

Tôi đã tìm thấy nhiều cách để thay đổi độ phân giải của hình ảnh bằng cách sử dụng convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

Sự khác biệt của chúng là gì?

Nếu tôi cần tạo hình ảnh thu nhỏ với kích thước lớn khác nhau với tỷ lệ khung hình cố định (cần cắt xén) - lựa chọn tốt nhất của tôi là gì?



Đối với nhiều thông tin hơn, xin xem imagemagick.org/Usage/filterimagemagick.org/Usage/filter/nicolas
fmw42

Câu trả lời:


136

thay đổi kích thước

-resize 400x300+20+30(như ví dụ -scale-sampleví dụ bên dưới) chuyển đổi đầu vào thành hình ảnh đầu ra có kích thước pixel là 400x300. Nó cũng dịch chuyển đầu ra 20 pixel sang phải và 30 pixel xuống dưới cùng. Ngoài ra, có một số khác biệt nữa đối với -scale:

  • -resizekhông hỗ trợ cài đặt bổ sung của -filter(sẽ xảy ra trên dòng lệnh trước khi sử dụng -resize!).

  • -filter xác định thuật toán chính xác được sử dụng cho màu sắc của các pixel được thêm vào trong trường hợp phóng đại hoặc các màu được sử dụng cho các pixel còn lại khi một số điểm ảnh lân cận của chúng bị loại bỏ trong trường hợp thu nhỏ.

  • Để có danh sách các bộ lọc được hỗ trợ, chỉ cần chạy convert -list filter.

  • -filter point -resize 400x300tạo ra kết quả giống hệt như -sample 400x300hiện tại, nhưng nó vẫn chạy chậm hơn một chút.

  • Nếu không đặt bên cạnh (trước đó) -resize, việc chuyển đổi sẽ âm thầm mặc định -filter Lanczosđó là chậm, nhưng mà tạo ra một nhiều chất lượng tốt hơn (vì nó sẽ đưa vào tài khoản các màu sắc của tất cả các pixel xung quanh đối với bất kỳ người mới được bổ sung) so với -filter pointsản xuất (trong đó sử dụng các khu vực gần quy tắc hàng xóm để xác định màu của pixel mới được thêm vào).

mẫu vật

-sample 400x300chuyển đổi hình ảnh đầu vào thành hình ảnh đầu ra có kích thước pixel là 400x300. Tuy nhiên, có một số khác biệt rất quan trọng đối với -resize:

  • -samplekhông hỗ trợ cài đặt bổ sung của -filter; nếu vẫn được đặt, thì -filterđơn giản là bỏ qua.

  • Khi phóng đại (vì kích thước hình ảnh đầu vào có thể nhỏ hơn 400x300), các pixel được sao chép theo khối.

  • Khi thu nhỏ (vì kích thước hình ảnh đầu vào có thể lớn hơn 400x300), pixel được lấy mẫu phụ bằng một thuật toán rất đơn giản: một số hàng và cột chỉ bị bỏ qua.

  • Đối số hình học-sample không hỗ trợ bất kỳ phần nào (không giống như -resize, tôn trọng các chỉ thị bù đắp cho đầu ra).

  • Đầu ra sẽ không bao giờ có nhiều (khác) màu hơn hình ảnh đầu vào đã có; nó có thể có ít màu hơn.

  • Do đó -samplerất nhanh (nhanh hơn -resize) - nhưng chất lượng đầu ra (thường) kém hơn: bạn có thể dễ dàng nhận được hiệu ứng chặnrăng cưa cực đoan trong kết quả đầu ra.

  • Một tính năng quan trọng -samplelà hình ảnh mới sẽ không chứa bất kỳ màu mới nào, mặc dù một số màu từ hình ảnh gốc có thể biến mất.

lấy lại mẫu

-resamplesử dụng làm tham số là XxY độ phân giải mong muốn , không phải là hình họcXxY pixel của hình ảnh đích. Mục đích của toán tử này là duy trì kích thước hiển thị của hình ảnh: Giả sử hình ảnh của bạn có kích thước 4 inch x 3 inch trên một thiết bị hiển thị hình ảnh ở 300 DPI. Sau đó, yêu cầu hoặc sẽ thay đổi kích thước hình ảnh để nó đo (một lần nữa) 4 inch x 3 inch trên thiết bị 72 DPI.-resample 72-resample 72x72

  • Thao tác này chỉ hoạt động đối với những hình ảnh đã có độ phân giải mong muốn được lưu trữ trong siêu dữ liệu của chúng (không phải tất cả các định dạng hình ảnh đều hỗ trợ khái niệm độ phân giải hình ảnh - JPEG, PNG và TIFF thì có).

  • Nếu hình ảnh nguồn ở định dạng thiếu hỗ trợ nội bộ cho độ phân giải hình ảnh, thì độ phân giải gốc (giả định) của hình ảnh phải được chỉ định qua -densitydòng lệnh trước khi chỉ định -resampleđộ phân giải.

tỉ lệ

-scale 400x300tạo ra kết quả tương đương (nhưng nhanh hơn, vì nó tránh tất cả các xử lý bộ lọc) như cách sử dụng -filter box -resize 400x300. Nó cũng hoàn toàn bỏ qua mọi -filtercài đặt hiện tại .

  • Khi thu nhỏ, nó thay đổi kích thước hình ảnh đơn giản bằng cách thay thế các màu pixel bằng cách lấy trung bình các màu pixel đầu vào tương ứng với nhau.

  • Khi phóng đại, nó chỉ cần sao chép các pixel đầu vào tương ứng cho các pixel bổ sung được yêu cầu.

thay đổi kích thước thích ứng

-adaptive-resize 400x300không hỗ trợ (hoặc bỏ qua, nếu được đặt) phần của thông số hình học và cũng bỏ qua -gravitycài đặt nếu có.

  • Nó sử dụng theo phép tam giác phụ thuộc dữ liệu mặc định khi thay đổi kích thước (trừ khi phương thức thay đổi kích thước bị ghi đè bằng cách chỉ định bổ sung -filter [something]).

hình nhỏ

-thumbnailhoạt động giống như -resizehiện tại, với một số khác biệt:

  • Nó được tối ưu hóa cho tốc độ.

  • Nó cũng loại bỏ bất kỳ cấu hình màu nhúng nào để giảm kích thước tệp của hình thu nhỏ.


Câu trả lời sau đây cho thấy một vài ví dụ (được minh họa!) Về -resizechỉ thị. Mỗi hình minh họa cho thấy một kết quả khác nhau, tùy thuộc vào 'chi tiết nhỏ' của phương pháp thay đổi kích thước chính xác:


4
Cảm ơn, điều đó có ý nghĩa hơn nhiều so với tài liệu ImageMagick.
Paul Brannan

Nếu bạn có hình ảnh mẫu, điều này sẽ còn hoàn hảo hơn :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

@KurtPfeifle: Trước hết, cảm ơn bạn vì câu trả lời rất giàu thông tin. Làm ơn, bạn có thể gợi ý bất kỳ cuốn sách hay hoặc một pdf tài liệu nào cho Imagemagick không. Cách tiếp cận tốt nhất mà tôi có lúc này là quét tất cả các trang của Imagemagick để giảm thời gian đọc, nhưng đó là rất nhiều thông tin (theo ý kiến ​​của tôi, không phải lúc nào cũng đủ mô tả). Bất kỳ trợ giúp được đánh giá cao.
saurabheights

5

Như đã nói bởi Ciro Santilli 新疆 改造 中心 六四 事件 法轮功:

Nếu bạn có hình ảnh mẫu, điều này sẽ còn hoàn hảo hơn :-)

-kích thước

google play với -resize (8,0 kB)

-mẫu vật

-mẫu vật (2,2kB)

-tỉ lệ

-tỉ lệ (7,0 kB)

-adaptive-resize

nhập mô tả hình ảnh ở đây (4,3 kB)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.