Câu trả lời:
Điều này được giải thích trong tài liệu chính thức của ImageMagick bên dưới, Cắt Cắt hình thu nhỏ cho Fit phù hợp :
Một cách khác, thay vì bỏ hình ảnh để phù hợp với kích thước hình thu nhỏ cụ thể mà chúng ta muốn, thay vào đó là cắt bỏ các phần của hình ảnh không phù hợp với kích thước cuối cùng.
Tất nhiên điều này có nghĩa là bạn thực sự mất một số phần của hình ảnh gốc, đặc biệt là các cạnh của hình ảnh, nhưng kết quả là một hình thu nhỏ được phóng to của phần trung tâm của hình ảnh. Đây thường là (nhưng không phải luôn luôn) chủ đề chính của hình ảnh, vì vậy nó là một phương pháp thực tế để tạo hình thu nhỏ.
Kể từ IM v6.3.8-3, cờ tùy chọn thay đổi kích thước đặc biệt '^' đã được thêm vào để làm cho việc này dễ dàng hơn. Chúng tôi chỉ thay đổi kích thước bằng cách sử dụng cờ này sau đó cắt bỏ các phần của hình ảnh tràn ra kích thước mong muốn.
Và trong ngữ cảnh của một lệnh ví dụ:
convert -define jpeg:size=200x200 hatching_orig.jpg -thumbnail 100x100^ \
-gravity center -extent 100x100 cut_to_fit.gif
Ignacio được liên kết với tài liệu chính xác, tuy nhiên tôi sẽ dán nó vào đây để thuận tiện:
convert -define jpeg:size=200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 thumbnail.jpeg
Tương tự, phần sau đây dành cho GraphicsMagick:
gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg
Giải trình:
-size 200x200
nói với bộ giải mã jpeg chúng ta chỉ cần độ phân giải này để nó có thể lưu bộ nhớ và đọc hình ảnh nguồn nhanh hơn-thumbnail 100x100^
nhanh chóng thay đổi kích thước làm cho bên ngắn nhất 100- gravity center
trung tâm hoạt động tiếp theo-extent 100x100
áp dụng hình ảnh cho khung vẽ 100x100+profile "*"
không lưu bất kỳ metainfo nào vào jpeg (làm cho hình ảnh thu được nhỏ hơn)Đó là một cách đơn giản hơn để làm điều đó:
Lệnh sau thay đổi kích thước cạnh nhỏ hơn thành 100 pixel và cắt hình vuông 100x100. Bạn có thể thêm một -strip
lệnh để giảm kích thước tập tin.
convert original.jpg -resize "100^>" -gravity center \
-crop 100x100+0+0 -strip thumbnail.jpg
Không giống như những người khác, nó không cố gắng tiết kiệm bộ nhớ. Thay vào đó, nó làm những gì bạn muốn, và không còn nữa. Thêm vào đó, nó sẽ không cao cấp hình ảnh.
Tôi đang sử dụng đồ họa để tạo hình thu nhỏ có kích thước chính xác nhưng tôi đang đệm hình ảnh bằng một bàn cờ thay vì cắt xén phần nhô ra.
gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg
gm convert
// Single threaded seems faster on smaller files
-limit Threads 1
// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard
// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg
// Merge the layers
-flatten
// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65!
// Use Progressive JPEG Encoding
-interlace Line
// Output Image
thumb_112x65.jpg
Tôi nghĩ rằng bạn đang tìm kiếm một cái gì đó như:
convert -crop 100x100+50+50 input_image.jpg output_image.jpg
nơi 100x100
là kích thước của hình chữ nhật cuối cùng và 50x50
sự bù đắp .
convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpg
, để biết thêm thông tin, hãy kiểm tra phản hồi của Igancio Vazquez để biết ví dụ hoặc kiểm tra tài liệu
Lệnh này cắt thành hình vuông và sau đó thay đổi kích thước thành 150x150
convert 824-full.jpg -set option:size '%[fx:min(w,h)]x%[fx:min(w,h)]' xc:none +swap -gravity center -composite -resize 150x150 temp.jpg
Các tùy chọn khác có sẵn tại đây: http://www.imagemagick.org/Usage/thumbnails/#sapes