สลับสีด้วย ImageMagick


27

ฉันจะสลับสีของภาพโดยใช้convertเครื่องมือImageMagick ได้อย่างไรเพื่อให้สีดำกลายเป็นสีขาวและสีขาวกลายเป็นสีดำ

กล่าวอีกนัยหนึ่งฉันต้องการเปลี่ยนสิ่งนี้:

เป็นต้นฉบับ

เป็นนี้

ฤๅษี

คำตอบ:


45

ใช้-negateตัวเลือก:

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

-negateตัวเลือกแทนที่แต่ละพิกเซลมีสีเสริมของมัน -channel RGBตัวเลือกจำเป็นต้องเป็นของ ImageMagick 7 เพื่อป้องกันไม่ให้ช่องอัลฟา (ถ้ามี) จากการถูกทำให้ไร้ผล (ขอบคุณ @yoya สำหรับข้อมูลเชิงลึกนี้!)

ดูเพิ่มเติมเอกสาร-negateสำหรับ


5
สิ่งนี้ทำให้ png ขาวดำของฉันโปร่งใสอย่างสมบูรณ์ ...
theonlygusti

สิ่งนี้ใช้ได้กับฉัน
shadi

2
ปัญหาความโปร่งใสเป็นเพราะช่องอัลฟาก็คว่ำ ใช้-channel RGB -negateเพื่อหลีกเลี่ยงสิ่งนั้น
goto-bus-stop

1
นั่นดูน่าสนใจ. ImageMagick ในระบบของฉัน (เวอร์ชั่น 6.8.9) ลบล้างช่องสัญญาณ RGB เท่านั้นไม่ใช่ค่าเริ่มต้นของช่องอัลฟาดังนั้นจึง-channel RGBไม่จำเป็น -channel RGBA -negateมันตีความช่องอัลฟาถ้าฉันผ่าน ฉันไม่แน่ใจว่าสิ่งที่อธิบายพฤติกรรมที่แตกต่าง
Jo Liss

มันเหมาะกับฉันโดยไม่ปฏิเสธ สิ่งที่ฉันอยากรู้คือ: ในขณะที่identifyเห็นอินพุตเป็น "8 บิต sRGB" ผลลัพธ์คือ "8-bit Grayscale Gray"
user74094

3

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/


1
convert input.png -negate output.pngทำงานได้ดีสำหรับฉันใน ImageMagick 7.0.8 (ArchLinux)
msrd0

ไม่มีปัญหากับภาพ RGB ที่ไม่มีความโปร่งใส RGBA ที่มีปัญหาภาพโปร่งใสทำให้เกิดเฉพาะ ImageMagick7
yoya

คุณสามารถตรวจสอบไฟล์ PNG ว่าโปร่งใสหรือไม่ identify -verbose input.png | grep Type มันเป็น TrueColor หรือ TrueColorAlpha
yoya

คำตอบที่ดีขอบคุณ! ฉันไปข้างหน้าและเพิ่ม-channel RGBคำตอบของฉัน
Jo Liss
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.