2009-12-16 28 views
6

Tôi đang cố thêm các góc tròn vào hình ảnh của mình bằng ImageMagick.Góc tròn sử dụng ImageMagick (bánh trong suốt hoặc màu trắng)

Nếu hình ảnh đầu vào là tệp PNG hoặc GIF, tập lệnh của tôi hoạt động chính xác.

Nhưng nếu tệp nhập của tôi là tệp JPEG thì các góc có màu đen. Tôi muốn sử dụng một màu góc tùy chỉnh trong trường hợp đó (ví dụ: màu trắng) bất kỳ ý tưởng nào?

Dưới đây là kịch bản bash làm việc của tôi:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $DST 

thông số là:

$ SRC: hình ảnh đầu vào $ W: chiều rộng của hình ảnh đầu vào $ H: chiều cao của hình ảnh đầu vào $ MASK: hình ảnh mặt nạ có các góc trong suốt $ DST: hình ảnh kết quả với các góc được làm tròn.

Xin cảm ơn trước.

Trả lời

9

Cuối cùng tìm ra giải pháp:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $TMP_PNG 

Tôi đang sử dụng một "tạm thời" PNG làm đích. Nếu định dạng đầu ra không phải là GIF hoặc PNG, tôi sử dụng chức năng "làm phẳng" của ImageMagick với màu trắng làm nền.

convert $TMP_PNG -background white -flatten $DST 

Đối với đầu ra PNG: chỉ cần sao chép $ TMP_PNG đến $ DST

Đối với đầu ra GIF: chỉ cần chuyển đổi $ TMP_PNG đến $ DST

khác: làm phẳng các hình ảnh như đã nói trước.

Hy vọng điều đó sẽ hữu ích.

+0

Lưu ý cho bất kỳ ai đọc câu trả lời này: nếu tệp mặt nạ tạm thời '$ TMP_PNG' không có đuôi tệp xác định định dạng của nó (ví dụ:' .png') thì bạn cần phải thêm tiền tố vào biến đó. Như thế này: 'png: $ TMP_PNG'. Ngoài ra 'canvas: none' là cách viết mới' xc: none' althugh thì cái thứ hai vẫn hoạt động. – starfry

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