2012-08-29 28 views
33
convert input.png -extent 100x100 -gravity center -background white output.png 

Nếu đầu vào là 50x50 nền xung quanh có màu trắng. Tôi có thể bằng cách nào đó thiết lập này để minh bạch mà không tuyên bố bất kỳ màu sắc trong đầu vào như minh bạch?ImageMagick mở rộng canvas với nền trong suốt

Trả lời

71

Sử dụng này để thay thế:

convert    \ 
     input.png  \ 
    -background none \ 
    -gravity center \ 
    -extent 100x100 \ 
     output.png 

Lưu ý tốt: Những thứ tự của các thông số rất có ý nghĩa! (Để thuyết phục chính mình, chỉ cần đặt -background none ở phần cuối của các thông số thay vì bắt đầu ...)


Cập nhật: Nhờ @jesmith người nhận thấy rằng commandline tôi ban đầu được cung cấp không không còn làm việc như dự định. Các phiên bản gần đây của convert ngoài ra yêu cầu rằng -gravity center được gọi là trước-extent 100x100. (Đây là một trong những thay đổi được giới thiệu trong một phiên bản mới nhất của ImageMagick [tại thời điểm viết câu trả lời ban đầu này]).

+7

Thật vậy thứ tự là quan trọng, và bạn đã nhận nó sai! Bạn cần phải đặt trọng lực trước khi -extent, hoặc nó sẽ không có hiệu lực. Hãy thử -Gravity SouthEast để xem ý tôi là gì. –

+2

@jesmith: Cảm ơn bạn đã gợi ý. –

+1

Nó xuất hiện văn bản ở cuối được cắt ... –

8

Ghi chú của Kurt là trớ trêu thay, đặt hàng rất quan trọng. Lệnh của Kurt dẫn đến gravity không được áp dụng cho extent, vì vậy, 'đường viền' trong suốt sẽ ở dưới cùng và/hoặc bên phải của hình ảnh.

Di chuyển gravity trước extent sẽ tạo chính xác các đường viền 'minh bạch' bằng nhau trên tất cả các mặt được áp dụng.

convert input.jpg -background none -gravity Center -extent 100x50 output.png

+0

** + 1 ** và cảm ơn câu trả lời bổ sung của bạn chỉ ra thứ tự dòng lệnh cần thiết cho '-trung tâm trọng lực'. Tôi đã không nhìn thấy nó, cũng không phải bình luận của @ jesmith trước đó, mặc dù anh ta đã chỉ ra nó vào tháng Năm '13. –

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