ฉันจะสลับสีของภาพโดยใช้convert
เครื่องมือImageMagick ได้อย่างไรเพื่อให้สีดำกลายเป็นสีขาวและสีขาวกลายเป็นสีดำ
กล่าวอีกนัยหนึ่งฉันต้องการเปลี่ยนสิ่งนี้:
เป็นนี้
ฉันจะสลับสีของภาพโดยใช้convert
เครื่องมือImageMagick ได้อย่างไรเพื่อให้สีดำกลายเป็นสีขาวและสีขาวกลายเป็นสีดำ
กล่าวอีกนัยหนึ่งฉันต้องการเปลี่ยนสิ่งนี้:
เป็นนี้
คำตอบ:
ใช้-negate
ตัวเลือก:
convert input.png -channel RGB -negate output.png
-negate
ตัวเลือกแทนที่แต่ละพิกเซลมีสีเสริมของมัน -channel RGB
ตัวเลือกจำเป็นต้องเป็นของ ImageMagick 7 เพื่อป้องกันไม่ให้ช่องอัลฟา (ถ้ามี) จากการถูกทำให้ไร้ผล (ขอบคุณ @yoya สำหรับข้อมูลเชิงลึกนี้!)
ดูเพิ่มเติมเอกสาร-negate
สำหรับ
-channel RGB -negate
เพื่อหลีกเลี่ยงสิ่งนั้น
-channel RGB
ไม่จำเป็น -channel RGBA -negate
มันตีความช่องอัลฟาถ้าฉันผ่าน ฉันไม่แน่ใจว่าสิ่งที่อธิบายพฤติกรรมที่แตกต่าง
identify
เห็นอินพุตเป็น "8 บิต sRGB" ผลลัพธ์คือ "8-bit Grayscale Gray"
ImageMagick 6.x สามารถกลับด้านความเข้มของสีด้วยตัวเลือก -negate เท่านั้น อ้างอิง) https://www.imagemagick.org/script/command-line-options.php#negate
convert input.png -negate output.png
ImageMagick 7.x ต้องการตัวเลือก -channel พร้อม -negate ref) https://imagemagick.org/script/porting.php#cliตัวเลือกการเปลี่ยนแปลง
convert input.png -channel RGB -negate output.png
นี่เป็นเพราะแชนเนลที่เปิดใช้งานเริ่มต้นมีความโปร่งใส (ทึบแสง / อัลฟ่า) ใน ImageMagick 7.x
ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels
อัลกอริธึมส่วนใหญ่จะอัพเดตช่องสีแดง, เขียว, น้ำเงิน, ดำ (สำหรับ CMYK) และอัลฟา การใช้งานของ - ผู้แทนดูเหมือนจะเสียสละเพื่อความมั่นคงโดยรวม
รายละเอียดเพิ่มเติมสำหรับคุณ http://blog.awm.jp/2018/11/18/im7negate/
convert input.png -negate output.png
ทำงานได้ดีสำหรับฉันใน ImageMagick 7.0.8 (ArchLinux)
identify -verbose input.png | grep Type
มันเป็น TrueColor หรือ TrueColorAlpha
-channel RGB
คำตอบของฉัน