Làm cách nào để chuyển đổi hàng loạt bitmap thành SVG?


13

Tôi có nhiều bitmap tỷ lệ xám mà tôi cần chuyển đổi sang định dạng vector, chẳng hạn như SVG. Tôi đã sử dụng Inkscape, cho kết quả tốt, nhưng việc này mất khoảng 10-15 phút để mở, chuyển đổi và lưu tệp. Có một công cụ hàng loạt hoặc dòng lệnh có thể chuyển đổi những công cụ này?


bạn có thể muốn có một cái nhìn potracelà tốt.
Stéphane Chazelas

cũng có thể sử dụng inkscape làm liên kết

Câu trả lời:


19

nồi

Tôi đã tìm thấy ví dụ này trên SO trong một câu hỏi và trả lời có tiêu đề: Làm cách nào để chuyển đổi hình ảnh JPEG thành định dạng SVG bằng ImageMagick? . Một trong những câu trả lời được đề xuất potrace.

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

Các kết quả

           ss # 1             ss # 2

Nhìn vào potracetrang web, rõ ràng bạn có thể đi trực tiếp từ BMP đến SVG.

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

tự động

Một lựa chọn khác potraceautotrace.

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

Bạn có thể sẽ phải chơi với --color-countđể có được một hình ảnh phù hợp với nhu cầu của bạn.

Các kết quả

                                                 ss # 3

Dùng loại nào?

Trong số 2 nó thực sự phụ thuộc vào nguồn nguyên liệu. Nếu bạn đang chuyển đổi hình ảnh thì potracecó khả năng là lựa chọn tốt hơn. Đối với các tài liệu không phải là ảnh như phông chữ và các vật thể vô tri như phong cảnh bao gồm những thứ như đường, sau đó autotracevới công --centerlinetắc của nó .

Mặc dù không tối ưu cho ảnh, nhưng nó hoạt động tốt trên ảnh nghệ thuật và hình ảnh giống như poster. Không làm quá tốt với màu sắc. Autotrace có một số tính năng không khả dụng trong hộp thoại Potrace được nhúng trong Inkscape. Ví dụ: có một công tắc trung tâm đặc biệt hữu ích để theo dõi đường (trong bản đồ) hoặc ký tự phông chữ.

Chuyển đổi hàng loạt

Bạn có thể gói một trong hai lệnh này trong một vòng lặp for trong Bash, điều này sẽ giúp bạn dễ dàng thực hiện các tác vụ chuyển đổi hàng loạt.

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

Người giới thiệu


không cần lưu trữ tệp trung gian từ JPEG. như một lớp lót tôi đã sử dụng:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
Louis Maddox

9

Tự động ghi

Bạn có thể thử autotrace .

Sử dụng lệnh sau bạn sẽ nhận được kết quả sau:

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

Tôi đã phải thực hiện một screencapture của kết quả svg và lưu dưới dạng png để hiển thị đầu ra.

Đây là một hình ảnh nguồn jpg:

nguồn sọ

Đây là hình ảnh kết quả:

chuyển đổi hộp sọ


7

Thông thường, tôi thực hiện tất cả các tác vụ xử lý hình ảnh của mình với convertImageMagic nhưng tôi không thể làm cho nó hoạt động tốt với các tệp svg. Tuy nhiên, bạn có thể sử dụng inkscapechính nó từ dòng lệnh:

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

Điều đó sẽ tạo ra các tập tin được gọi là foo.bmp.svg. Để có được tên đúng, hãy thử điều này:

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

Vấn đề với cách tiếp cận này là, ít nhất là trên hệ thống của tôi, nó bật lên một hộp thoại đồ họa gây phiền nhiễu hỏi tôi có muốn liên kết hoặc nhúng hình ảnh không:

                                 nhập mô tả hình ảnh ở đây

Vì vậy, bạn vẫn cần nhấp OK thủ công, nhưng nó vẫn nhanh hơn nhiều so với thực hiện theo từng tệp.

Các hình ảnh đầu ra giống hệt như tôi có thể nói:

   nhập mô tả hình ảnh ở đây


Về mặt lý thuyết, cả hai convertrsvg-convertsẽ có thể làm điều này nhưng tôi không thể làm cho nó hoạt động tốt trên hình ảnh của mình trong vài phút tôi đã thử. Cả hai đều đáng để xem xét.


Tôi không tích cực nhưng trên trang web Inkscape có thông báo rằng nó hiện đã potraceđược nhúng, vì vậy tôi tự hỏi liệu nó có sử dụng công cụ đó không? trích dẫn: "Potrace hiện được nhúng vào Inkscape. Bạn không cần phải chạy riêng nó." - wiki.inkscape.org/wiki/index.php/Tools
slm

5
Tôi nghi ngờ Inkscape sẽ chỉ đơn giản nhúng hình ảnh bitmap bên trong SVG, do đó trông giống hệt nhau.
dùng2428118

@ user2428118 Tôi nghi ngờ bạn đúng. Đó có thể là một vấn đề tùy thuộc vào chính xác những gì bạn muốn làm với những hình ảnh này.
terdon

1

potracelà công cụ cho điều đó. Bạn có thể xử lý chúng hàng loạt, nhưng trước tiên bạn phải chuyển đổi hình ảnh thành đơn sắc:

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

Cài đặt trên Ubuntu:

sudo apt install potrace

Nếu bạn muốn chuyển đổi hình ảnh không đơn sắc, Inkscapecó cơ sở công cụ theo dõi trên potrace hỗ trợ nhiều màu, trước tiên, nó chuyển đổi hình ảnh thành các lớp màu và sau đó theo dõi chúng và kết hợp kết quả.

Để sử dụng trình theo dõi, tải hoặc nhập hình ảnh, chọn nó và chọn mục Đường dẫn > Trace Bitmap hoặc Shift+ Alt+B.

Xem

Hướng dẫn tại đây!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.