วิธีการ batch แปลงบิตแมปเป็น SVG


13

ฉันมีบิตแมปมาตราส่วนสีเทาจำนวนมากที่ฉันต้องการแปลงเป็นรูปแบบเวกเตอร์เช่น SVG ฉันใช้ Inkscape ซึ่งให้ผลลัพธ์ที่ดี แต่ใช้เวลาประมาณ 10-15 นาทีในการเปิดแปลงและบันทึกไฟล์ มีชุดเครื่องมือหรือบรรทัดคำสั่งที่สามารถแปลงได้หรือไม่?


คุณอาจต้องการดูpotraceเช่นกัน
Stéphane Chazelas

นอกจากนี้ยังสามารถใช้ inkscape เป็นลิงค์

คำตอบ:


19

potrace

ฉันพบตัวอย่างนี้ใน SO ใน Q&A หัวข้อ: วิธีแปลงภาพ JPEG เป็นรูปแบบ SVG โดยใช้ ImageMagick? . potraceหนึ่งในคำตอบที่แนะนำ

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

ผล

           เอสเอส # 1             เอสเอส # 2

ดูที่potraceเว็บไซต์คุณสามารถไปได้โดยตรงจาก BMP ถึง SVG

$ potrace -s input.bmp -o output.svg

AutoTrace

ตัวเลือกในการอีกคือpotraceautotrace

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

คุณอาจจะต้องเล่นกับ--color-countเพื่อให้ได้ภาพที่ตรงกับความต้องการของคุณ

ผล

                                                 เอสเอส # 3

จะใช้อะไร

ของทั้งสองนี้ขึ้นอยู่กับแหล่งข้อมูล หากคุณกำลังแปลงภาพpotraceน่าจะเป็นตัวเลือกที่ดีกว่า สำหรับวัสดุที่ไม่ใช่ภาพถ่ายเช่นฟอนต์และวัตถุที่ไม่มีชีวิตเช่นทิวทัศน์ที่มีสิ่งต่าง ๆ เช่นถนนจากนั้นautotraceใช้--centerlineสวิตช์

แม้ว่าจะไม่เหมาะสำหรับภาพถ่าย แต่มันก็ทำงานได้ดีกับภาพลายเส้นและรูปภาพเหมือนโปสเตอร์ ทำสีได้ดีเกินไป Autotrace มีคุณสมบัติบางอย่างที่ไม่สามารถใช้ได้ในกล่องโต้ตอบ Potrace ใน Inkscape ตัวอย่างเช่นมีสวิตช์กลางบรรทัดที่มีประโยชน์โดยเฉพาะอย่างยิ่งสำหรับการติดตามถนน (ในแผนที่) หรือตัวอักษรแบบอักษร

การแปลงเป็นชุด

คุณสามารถรวมคำสั่งเหล่านี้ในการ for for loop ใน Bash ซึ่งจะทำให้ง่ายต่อการทำงานการแปลงจำนวนมาก

$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done

อ้างอิง


ไม่จำเป็นต้องจัดเก็บไฟล์ระดับกลางจาก JPEG ในฐานะที่เป็นสายการบินหนึ่งที่ฉันใช้:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Louis Maddox

9

AutoTrace

คุณอาจจะลองAutoTrace

การใช้คำสั่งต่อไปนี้คุณจะได้รับผลลัพธ์ต่อไปนี้:

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

ฉันต้องใช้ screencapture ของ svg ที่เกิดขึ้นและบันทึกเป็น png เพื่อแสดงผลลัพธ์

นี่คือภาพต้นฉบับ jpg:

แหล่งกะโหลกศีรษะ

นี่คือภาพผลลัพธ์:

กะโหลกศีรษะแปลง


7

โดยปกติฉันทำงานจัดการภาพด้วยconvertจาก ImageMagic ทั้งหมด แต่ฉันไม่สามารถเล่นได้ดีกับไฟล์ svg อย่างไรก็ตามคุณสามารถใช้inkscapeตัวเองจากบรรทัดคำสั่ง:

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

foo.bmp.svgที่จะสร้างไฟล์ที่เรียกว่า เพื่อให้ชื่อถูกต้องลองสิ่งนี้:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

ปัญหาเกี่ยวกับวิธีการนี้คืออย่างน้อยในระบบของฉันมันก็ปรากฏไดอะล็อกกราฟิกที่น่ารำคาญถามว่าฉันต้องการที่จะเชื่อมโยงหรือฝังภาพ:

                                 ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นคุณยังคงต้องคลิกตกลงด้วยตนเอง แต่ก็ยังเร็วกว่าการทำไฟล์ตามไฟล์

ภาพที่ส่งออกเป็นเหมือนเท่าที่ฉันสามารถบอกได้:

   ป้อนคำอธิบายรูปภาพที่นี่


ในทางทฤษฎีทั้งสองconvertและrsvg-convertควรจะทำเช่นนี้ แต่ฉันไม่สามารถทำให้มันทำงานได้ดีในรูปของฉันในไม่กี่นาทีที่ฉันพยายาม ทั้งคู่ต่างก็คุ้มค่าที่จะดู


ฉันไม่ดี แต่ในเว็บไซต์ Inkscape มันบอกว่าตอนนี้มันpotraceฝังอยู่แล้วดังนั้นฉันสงสัยว่ามันเป็นเพียงการใช้เครื่องมือนั้นหรือไม่ เครื่องหมายคำพูด: "Potrace ถูกฝังลงใน Inkscape แล้วคุณไม่จำเป็นต้องเรียกใช้แยกต่างหาก" - wiki.inkscape.org/wiki/index.php/Tools
slm

5
ฉันสงสัยว่า Inkscape จะฝังภาพบิตแมปไว้ใน SVG ได้อย่างง่ายดาย
user2428118

@ user2428118 ฉันสงสัยว่าคุณพูดถูก นั่นอาจเป็นปัญหาหรือไม่ขึ้นอยู่กับว่าคุณต้องการทำอะไรกับภาพเหล่านี้
terdon

1

potraceเป็นเครื่องมือสำหรับการที่ คุณสามารถประมวลผลภาพเป็นกลุ่ม แต่ก่อนอื่นคุณต้องแปลงภาพเป็นขาวดำ:

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

ติดตั้งบน Ubuntu:

sudo apt install potrace

หากคุณต้องการแปลงภาพที่ไม่ใช่สีขาวดำInkscapeมีเครื่องมือติดตามบนฐานที่สนับสนุนหลายสีมันจะแปลงภาพเป็นเลเยอร์สีก่อนแล้วจึงติดตามภาพเหล่านั้นและรวมผลลัพธ์

หากต้องการใช้ตัวติดตามโหลดหรือนำเข้ารูปภาพให้เลือกและเลือกรายการ Path > Trace BitmapหรือShift+ Alt+B.

ดู

สอนที่นี่!

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