ฉันมีบิตแมปมาตราส่วนสีเทาจำนวนมากที่ฉันต้องการแปลงเป็นรูปแบบเวกเตอร์เช่น SVG ฉันใช้ Inkscape ซึ่งให้ผลลัพธ์ที่ดี แต่ใช้เวลาประมาณ 10-15 นาทีในการเปิดแปลงและบันทึกไฟล์ มีชุดเครื่องมือหรือบรรทัดคำสั่งที่สามารถแปลงได้หรือไม่?
ฉันมีบิตแมปมาตราส่วนสีเทาจำนวนมากที่ฉันต้องการแปลงเป็นรูปแบบเวกเตอร์เช่น SVG ฉันใช้ Inkscape ซึ่งให้ผลลัพธ์ที่ดี แต่ใช้เวลาประมาณ 10-15 นาทีในการเปิดแปลงและบันทึกไฟล์ มีชุดเครื่องมือหรือบรรทัดคำสั่งที่สามารถแปลงได้หรือไม่?
คำตอบ:
ฉันพบตัวอย่างนี้ใน SO ใน Q&A หัวข้อ: วิธีแปลงภาพ JPEG เป็นรูปแบบ SVG โดยใช้ ImageMagick? . potrace
หนึ่งในคำตอบที่แนะนำ
$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg
ดูที่potrace
เว็บไซต์คุณสามารถไปได้โดยตรงจาก BMP ถึง SVG
$ potrace -s input.bmp -o output.svg
ตัวเลือกในการอีกคือpotrace
autotrace
$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp
คุณอาจจะต้องเล่นกับ--color-count
เพื่อให้ได้ภาพที่ตรงกับความต้องการของคุณ
ของทั้งสองนี้ขึ้นอยู่กับแหล่งข้อมูล หากคุณกำลังแปลงภาพpotrace
น่าจะเป็นตัวเลือกที่ดีกว่า สำหรับวัสดุที่ไม่ใช่ภาพถ่ายเช่นฟอนต์และวัตถุที่ไม่มีชีวิตเช่นทิวทัศน์ที่มีสิ่งต่าง ๆ เช่นถนนจากนั้นautotrace
ใช้--centerline
สวิตช์
แม้ว่าจะไม่เหมาะสำหรับภาพถ่าย แต่มันก็ทำงานได้ดีกับภาพลายเส้นและรูปภาพเหมือนโปสเตอร์ ทำสีได้ดีเกินไป Autotrace มีคุณสมบัติบางอย่างที่ไม่สามารถใช้ได้ในกล่องโต้ตอบ Potrace ใน Inkscape ตัวอย่างเช่นมีสวิตช์กลางบรรทัดที่มีประโยชน์โดยเฉพาะอย่างยิ่งสำหรับการติดตามถนน (ในแผนที่) หรือตัวอักษรแบบอักษร
คุณสามารถรวมคำสั่งเหล่านี้ในการ for for loop ใน Bash ซึ่งจะทำให้ง่ายต่อการทำงานการแปลงจำนวนมาก
$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done
convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
การใช้คำสั่งต่อไปนี้คุณจะได้รับผลลัพธ์ต่อไปนี้:
autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg
ฉันต้องใช้ screencapture ของ svg ที่เกิดขึ้นและบันทึกเป็น png เพื่อแสดงผลลัพธ์
นี่คือภาพต้นฉบับ jpg:
นี่คือภาพผลลัพธ์:
โดยปกติฉันทำงานจัดการภาพด้วย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
ควรจะทำเช่นนี้ แต่ฉันไม่สามารถทำให้มันทำงานได้ดีในรูปของฉันในไม่กี่นาทีที่ฉันพยายาม ทั้งคู่ต่างก็คุ้มค่าที่จะดู
potrace
ฝังอยู่แล้วดังนั้นฉันสงสัยว่ามันเป็นเพียงการใช้เครื่องมือนั้นหรือไม่ เครื่องหมายคำพูด: "Potrace ถูกฝังลงใน Inkscape แล้วคุณไม่จำเป็นต้องเรียกใช้แยกต่างหาก" - wiki.inkscape.org/wiki/index.php/Tools
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.
ดู
potrace
เช่นกัน