Đảo ngược màu sắc với ImageMagick


27

Làm cách nào để đảo ngược màu sắc của hình ảnh bằng convertcông cụ ImageMagick , để màu đen trở thành màu trắng và màu trắng trở thành màu đen?

Nói cách khác, tôi muốn biến điều này:

nguyên

vào đây:

đảo ngược

Câu trả lời:


45

Sử dụng -negatetùy chọn:

convert input.png -channel RGB -negate output.png

Các -negatetùy chọn thay thế mỗi pixel với màu bổ sung của nó. Các -channel RGBtùy chọn là cần thiết như của ImageMagick 7 để ngăn chặn các kênh alpha (nếu có) không bị phủ nhận. (Cảm ơn @yoya vì cái nhìn sâu sắc này!)

Xem thêm các tài liệu cho -negate.


5
điều này làm cho png đen trắng của tôi hoàn toàn trong suốt ...
theonlygusti

Điều này làm việc cho tôi
shadi

2
Vấn đề minh bạch là do kênh alpha cũng bị đảo ngược. Sử dụng -channel RGB -negateđể tránh điều đó.
goto-bus-stop

1
Nó thật thú vị. ImageMagick trên hệ thống của tôi (phiên bản 6.8.9) chỉ phủ nhận các kênh RGB chứ không phải kênh alpha theo mặc định, do đó -channel RGBkhông cần thiết. Nó chỉ đảo kênh alpha nếu tôi vượt qua -channel RGBA -negate. Tôi không chắc điều gì giải thích cho hành vi khác nhau.
Jo Liss

Nó làm việc cho tôi, mà không phủ nhận. Điều tôi tò mò là: trong khi identifyxem đầu vào là "8 bit sRGB", thì đầu ra là "Xám xám 8 bit".
user74094

3

ImageMagick 6.x chỉ có thể đảo ngược cường độ màu với tùy chọn -negate. tham chiếu) https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.x yêu cầu tùy chọn -channel với -negate. ref) https://imagemagick.org/script/porting.php#cli Tùy chọn thay đổi

convert input.png -channel RGB -negate output.png

Điều này là do các kênh hoạt động mặc định chứa độ trong suốt (mờ / alpha) trong ImageMagick 7.x

ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels

Hầu hết các thuật toán cập nhật các kênh màu đỏ, xanh lá cây, xanh dương, đen (cho CMYK) và alpha. Khả năng sử dụng của -negate dường như được hy sinh cho tính nhất quán tổng thể.

Chi tiết hơn cho bạn. http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pnghoạt động tốt với tôi trên ImageMagick 7.0.8 (ArchLinux)
msrd0

Không có vấn đề trên hình ảnh RGB mà không minh bạch. RGBA với vấn đề hình ảnh trong suốt gây ra sự cố, chỉ có ImageMagick7.
yoya

Bạn có thể kiểm tra tệp PNG có trong suốt hay không. identify -verbose input.png | grep Type Nó xuất hiện TrueColor hoặc TrueColorAlpha.
yoya

Câu trả lời tuyệt vời, cảm ơn! Tôi đã đi trước và thêm vào -channel RGBcâu trả lời của tôi.
Jo Liss
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.