ฉันจะแปลงโฟลเดอร์ของ. pngs เป็น. jpgs ขณะตั้งค่าสีพื้นหลังได้อย่างไร


10

ฉันมีโฟลเดอร์ของไฟล์ png ที่มีพื้นหลังโปร่งใส ฉันต้องการแปลงจากบรรทัดคำสั่งและรักษาพื้นหลังที่โปร่งใสของภาพ

ฉันขอขอบคุณความช่วยเหลือใด ๆ

เนื่องจาก jpgs ไม่สนับสนุนความโปร่งใสดังนั้นฉันจะระบุค่าฐานสิบหกของสีพื้นหลังของเอาต์พุต jpg ได้อย่างไร ตอนนี้มันเป็นค่าเริ่มต้น#ffffffหรือไม่ ฉันได้ลองใช้สคริปต์นี้ แต่ให้ภาพพื้นหลังสีขาวของ jpgs:

mogrify -quality 100 -format jpg *.png

ปรับปรุง

ฉันสร้างไฟล์ png เหล่านี้ใน inkscape ฉันควรพูดถึงว่าเป้าหมายของฉันในการแปลง pngs เหล่านี้เป็น jpgs คือกำจัดขอบขรุขระบนวัตถุทรงกลมหรือเชิงมุม pngs ในปัจจุบันมีขอบหยักและฉันอ่านว่าการแปลงเป็น jpgs อาจช่วยแก้ปัญหานี้ได้ อย่างไรก็ตามการแปลงผ่านวิธีการที่ระบุไว้ในคำตอบของ Christian Skjødtจะทำให้ภาพมีรอยหยักที่แย่กว่า มีวิธีที่ฉันสามารถแปลง pngs เป็น jpg และใช้ anti-aliasing หรืออาจเป็นเทคนิคอื่นเพื่อกำจัดขอบหยัก ขอบคุณสำหรับความช่วยเหลือ


3
มันค่อนข้างยากที่จะตอบคำถามของคุณหากมีการเปลี่ยนแปลงตลอดเวลา ... สำหรับการอ้างอิงในอนาคต: พยายามที่จะรวมสิ่งที่คุณต้องการที่จะบรรลุในคำถามของคุณจากจุดเริ่มต้น การ "อัปเดต 2" ของคุณอีกครั้ง: "ความไร้สาระ" เป็นผลจากความละเอียดที่คุณเลือกหรือไม่ ถ้าคุณเพิ่มความละเอียด (หมายเลข DPI ในกล่องโต้ตอบ "ส่งออกบิตแมป ... ")
Marcel Stimberg

คำตอบ:


3

เพื่อทำให้ขอบเรียบคุณสามารถสร้าง PNG ขนาดใหญ่กว่าขนาดเป้าหมาย 10 เท่าจากนั้นปรับขนาดด้วยการลดรอยหยักเป็น JPG ฉันทำสิ่งนี้โดยใช้ Python และ Python Imaging Library เพื่อให้ได้ผลดี แต่ฉันไม่แน่ใจว่าจะทำอย่างไรโดยใช้เครื่องมืออื่น


28

รูปแบบ JPEG ไม่สนับสนุนความโปร่งใส - ดังนั้นการดูแลพื้นหลังแบบโปร่งใสจึงไม่สามารถทำได้หากคุณต้องการ (หรือต้อง) ใช้รูปแบบ JPEG ดูWikipediaสำหรับภาพรวมของความสามารถของรูปแบบภาพต่างๆ

โปรดทราบว่าJPEG 2000รองรับความโปร่งใสได้จริง แต่ก็มีน้อยกว่ารูปแบบ JPEG มาก มันขึ้นอยู่กับกรณีการใช้งานของคุณไม่ว่าจะเป็นทางเลือกที่ทำงานได้


ฉันอาจจะผิด แต่ OP กำลังถามเกี่ยวกับการตั้งค่าพื้นที่สีโปร่งใสใด ๆ พวกมันถูกทำให้เป็นสีขาว แต่ OP สามารถใช้สีน้ำเงินได้
nanofarad

16

สำหรับคำถามที่สองของคุณ:

ในการระบุสีพื้นหลังเมื่อแปลงภาพของคุณคุณสามารถใช้-fillตัวเลือก:

mogrify -quality 100 -format jpg -fill "#FF0000" -opaque none *.png

การใช้-backgroundให้ผลลัพธ์ที่คล้ายกัน -opaque noneอย่าลืม


เฮ้ขอบคุณสำหรับความช่วยเหลือ มีวิธีใดบ้างที่ฉันสามารถ antialias เอาต์พุต jpeg ผ่านคำสั่งนี้? ดูการอัปเดต 2 ด้านบนสำหรับบริบทเพิ่มเติม ขอบคุณ
James

4

ขออภัยไม่มีวิธีjpegรูปแบบไม่รองรับalpha channelดังนั้นคุณจึงไม่สามารถโปร่งใสได้


0

ขึ้นอยู่กับสิ่งที่คุณพยายามทำกับภาพคุณอาจวางช่องอัลฟาลงในภาพสีเทาหรือ bitmask ที่แยกต่างหากและโปรแกรมที่ใช้ภาพนั้นจะใช้รูปภาพเสริมเป็นค่าโปร่งแสง / โปร่งใส . แม้ว่าในที่สุดมันจะดีกว่าที่จะแก้ไขโปรแกรมดังนั้นจึงรองรับอัลฟ่า png

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