Potrace PNG sang SVG: Xử lý alpha và giữ lỗ rỗng
Chuyển đổi PNG bằng Potrace sau khi chuẩn bị kênh alpha của nó. Thực hiện theo quy trình làm việc PGM đã được thử nghiệm, so sánh các ngưỡng và kiểm tra nền và các lỗ bên trong của SVG.
Trên trang này
Để chuyển đổi PNG sang SVG bằng Potrace, trước tiên hãy chuẩn bị một bitmap thang độ xám, sau đó theo dõi nó bằng potrace --svg. Đối với tác phẩm nghệ thuật tối trên các pixel trong suốt, hãy kết hợp hình ảnh thành một lớp mờ màu trắng trước khi lưu bitmap. Kiểm tra các hình dạng có ngưỡng và các lỗ mở bên trong của chúng trước khi chấp nhận SVG.
Potrace tiêu chuẩn 1.16 đọc trực tiếp PBM, PGM, PPM và BMP thay vì PNG trực tiếp. sách hướng dẫn chính thức của nó mô tả thao tác dò tìm đơn sắc: các sắc thái trung gian trở thành đen hoặc trắng. Quy trình làm việc bên dưới tạo ra hình học đặc với các vùng trống thay vì giữ nguyên các giá trị alpha liên tục của PNG.
Nếu bạn thích quy trình làm việc của trình duyệt cho hình ảnh bạn đã có, PerfectVector cung cấp tính năng chuyển đổi từ hình ảnh sang đường dẫn và bản xem trước miễn phí. Bắt đầu miễn phí với hình ảnh của riêng bạn, sau đó so sánh hình bóng, các lỗ nhỏ và màu sắc của nó với nguồn. Mở khóa kết quả trước khi chỉnh sửa hoặc xuất. Công thức Potrace cục bộ vẫn hữu ích khi bạn muốn cài đặt lệnh lặp lại và tiền xử lý rõ ràng.
Những gì bạn cần trước khi truy tìm
Sử dụng tệp thực thi Potrace đã cài đặt, Python 3 với Pillow và PNG gốc. Công thức này được thực hiện với Potrace 1.16 và Pillow 11.3.0. Giữ một bản sao của dữ liệu đầu vào và làm việc trong một thư mục riêng để mỗi biến thể ngưỡng có một tên tệp riêng biệt.
Trường hợp bắt đầu là logo, biểu tượng hoặc hình vẽ tối màu trên nền sáng hoặc trong suốt. Nếu đối tượng của bạn sáng trên nền tối, hãy quyết định cách đảo ngược hoặc chuẩn bị hình ảnh trước khi áp dụng công thức này. Để biết quy trình làm việc của trình chỉnh sửa tương tác, hãy xem Bản đồ bit dấu vết Inkscape.
matte là nền đồng nhất được sử dụng để phân giải các pixel trong suốt trước khi theo dõi. ngưỡng là giới hạn độ sáng để chia hình ảnh đã chuẩn bị thành nền trước và nền sau. Những lựa chọn đó xảy ra trước khi đường viền trở thành hình học SVG.
1. Giải quyết độ trong suốt trước khi lưu bitmap
PNG lưu trữ màu sắc và độ mờ riêng biệt. Kênh alpha mô tả độ mờ của từng pixel. Đặc tả PNG giải thích cách trình bày này; một pixel hoàn toàn trong suốt vẫn có thể mang các giá trị RGB. Việc thả kênh alpha không tổng hợp các pixel đó lên nền trắng mà bạn có thể đã thấy trong trình xem hình ảnh.
Để có vết tối, hãy cố ý đặt hình ảnh lên trên màu trắng. Đoạn mã Python này mở artwork.png, kết hợp nó thành một hình ảnh màu trắng có kích thước bằng nhau, chuyển kết quả đó thành thang độ xám và lưu artwork.pgm:
from PIL import Image
src = Image.open("artwork.png").convert("RGBA")
matte = Image.new("RGBA", src.size, "white")
gray = Image.alpha_composite(matte, src).convert("L")
gray.save("artwork.pgm")alpha_composite của Pillow xác định hình ảnh thứ hai được tổng hợp trên hình ảnh đầu tiên. Cả hai hình ảnh ở đây đều có kích thước và chế độ RGBA phù hợp.
Mở PGM đã chuẩn bị trước khi truy tìm. Nền bên ngoài của nó phải có màu trắng, nền trước có màu tối và các khoảng trống quan trọng có thể nhìn thấy được. Hình chữ nhật màu đen ở giai đoạn này là vấn đề tiền xử lý; việc thay đổi quy tắc điền SVG sau này không thể khôi phục lỗ mở chưa bao giờ đạt đến trình theo dõi.

2. Theo dõi PGM đã chuẩn bị
Chạy cái này trong thư mục chứa artwork.pgm:
potrace artwork.pgm --svg --blacklevel 0.5 --turdsize 2 --output artwork.svg--blacklevel 0.5 chọn giới hạn thang độ xám. --turdsize 2 giữ rõ ràng khả năng ngăn chặn đốm nhỏ mặc định của Potrace. Sử dụng tên đầu ra mới khi bạn thay đổi cài đặt, sau đó so sánh các tệp thay vì ghi đè liên tục tham chiếu của bạn.
Thay đổi một điều khiển tại một thời điểm:
| Điều khiển | Những gì cần xem xét |
|---|---|
--blacklevel | Liệu các dấu mờ có trở thành tiền cảnh và các khe hở hẹp vẫn trống không |
--turdsize | Cho dù các hình dạng nhỏ bị cô lập là tiếng ồn hay các chi tiết có chủ ý |
--alphamax | Xử lý góc; mặc dù tên của nó, đây không phải là điều khiển độ mờ |
Ngưỡng mức độ đen cao hơn có thể bao gồm nhiều pixel màu xám nhạt hơn ở nền trước. Điều đó có thể tăng cường một đường mờ hoặc đóng một lỗ sáng. Đánh giá bitmap đã chuẩn bị và đường viền kết quả cùng nhau. Làm mịn không thể xây dựng lại bộ đếm sau khi ngưỡng đã lấp đầy nó.
Hai hình ảnh thử nghiệm ban đầu cho thấy điều gì
Chúng tôi đã tạo hai 256 × 256 PNG được kiểm soát và chạy các lệnh tiền xử lý và lệnh Potrace ở trên. Một là một chiếc nhẫn màu đen có các điểm ảnh trong suốt bên ngoài và bên trong. Cái còn lại là một vết đen đục có mặt đếm hẹp màu xám, có lỗ hở bên trong vết đó. Chúng tôi đã kiểm tra các SVG được tạo bằng trình kết xuất và kiểm tra độ trong suốt ở giữa và bên ngoài của chúng.
| Đầu vào và chuẩn bị | Kết quả SVG được quan sát |
|---|---|
| Vòng trong suốt, alpha bị loại bỏ trước khi chuyển đổi thang độ xám | Một tấm vải đen đầy màu sắc; bên ngoài và khoảng mở dự định đã trở thành tiền cảnh |
| Vòng tương tự, được kết hợp thành màu trắng trước khi chuyển đổi thang độ xám | Bên ngoài và trung tâm đều trống rỗng; chiếc nhẫn vẫn đầy |
| Bộ đếm màu xám hẹp, tổ hợp màu trắng, mức độ đen 0,5 | Quầy vẫn mở |
| Hình ảnh truy cập được chuẩn bị tương tự, mức độ đen 0,8 | Bộ đếm được điền vào |
Các pixel vô hình của vòng điều khiển mang giá trị RGB màu đen. Việc bỏ qua alpha sẽ làm lộ các giá trị đó đến ngưỡng. Phiên bản hỗn hợp màu trắng đã giải quyết chúng thành màu trắng trước tiên. Điều này giải thích hộp đen của mẫu đó; không phải khẳng định rằng mọi PNG sẽ thất bại theo cùng một cách.
Kiểm tra bộ đếm giữ cho đầu vào và các cài đặt khác không đổi. Chỉ có ngưỡng thay đổi. Kết quả của nó cho thấy tại sao một dấu vết trông tối hơn không tự động là một dấu vết tốt hơn. Kiểm tra tính năng bạn cần thay vì chọn cài đặt có hình bóng nặng nhất.
Đây là các bước kiểm tra kỹ thuật số của hai thiết bị cố định gốc, không có hình ảnh raster được nhúng trong đầu ra SVG của chúng. Chúng tôi không so sánh chất lượng của Potrace với PerfectVector, nhập tệp vào máy cắt hoặc kiểm tra kết quả vật lý.
3. Kiểm tra lỗ hổng và nền trong SVG đã lưu
Đặt SVG trên nền tương phản. Nền đó sẽ thể hiện qua cả khu vực bên ngoài và mọi khoảng trống dự định. Sơn trắng có thể trông giống như một cái lỗ trên trang trắng, vì vậy chỉ hình thu nhỏ là không đủ.
Một SVG đường phức hợp có thể mô tả đường viền bên ngoài và lỗ mở bên trong trong một đối tượng. Nếu lỗ mở đã không xuất hiện trong hình học được vẽ, hãy quay lại PGM và ngưỡng. Nếu nó tồn tại trong một trình kết xuất nhưng điền vào sau khi nhập, thay vào đó hãy điều tra cách diễn giải đường dẫn của ứng dụng nhận. Hướng dẫn khắc phục sự cố lỗ SVG phân biệt các trường hợp đó.
Kiểm tra tệp đã lưu để tìm:
- hình bóng dự định và những khoảng trống nhỏ;
- không gian trống thực sự bên ngoài nhãn hiệu và bên trong quầy của nó;
- những đốm đi lạc không nên trở thành đồ vật;
- kích thước tài liệu phù hợp trong quy trình làm việc đích;
- đường dẫn chứ không phải là bản sao được nhúng của PNG.
Nếu chỉ nền có vẻ không ổn, hãy sử dụng chẩn đoán nền SVG trong suốt trước khi xóa mọi đối tượng màu trắng. Nếu một chi tiết nhỏ thực sự không có trong nguồn, hãy sử dụng bản gốc lớn hơn hoặc vẽ lại chi tiết đó. Hướng dẫn về chất lượng nguồn giải thích ranh giới đó.
Khi quy trình làm việc đơn sắc này phù hợp
Potrace phù hợp với một dấu ấn có thể được thể hiện dưới dạng một hình bóng đầy đặn và những khoảng hở có chủ ý. Giữ raster khi bóng mờ hoặc độ mờ một phần là một phần của tác phẩm nghệ thuật bạn cần bảo tồn. Đối với một số màu có ý nghĩa, hãy sử dụng quy trình vector hóa có khả năng màu hoặc chuẩn bị các bước riêng biệt có chủ ý; lệnh đơn sắc này không tạo ra bảng màu.
Bạn cũng có thể sử dụng trình soạn thảo vector để vẽ lại đường viền quan trọng. Tự động theo dõi cung cấp hình dạng phù hợp và mục đích sử dụng dự định của bạn sẽ xác định xem nên giữ hay chỉnh sửa nó.
Câu hỏi thường gặp
Potrace có thể mở PNG trực tiếp không? Potrace tiêu chuẩn 1.16 chấp nhận đầu vào PBM, PGM, PPM và BMP. Trước tiên, hãy giải mã PNG bằng một công cụ hình ảnh khác, xử lý độ trong suốt của nó một cách rõ ràng và lưu bitmap được hỗ trợ trước khi theo dõi.
Potrace có duy trì độ trong suốt của PNG không? Quy trình làm việc đơn sắc tạo ra hình học đầy màu sắc và các vùng trống. Nó không bảo toàn các giá trị alpha liên tục của PNG. Tổng hợp các pixel trong suốt thành một lớp mờ có chủ ý trước khi phân ngưỡng, sau đó xác minh các vùng trống của SVG trên nền tương phản.
Alphamax có phải là cài đặt PNG alpha không? Không. Alphamax của Potrace kiểm soát việc xử lý góc trên các đường cong được vẽ. Nó không xác định cách tổng hợp kênh độ mờ của PNG trước khi theo dõi.
Tại sao một cái lỗ lại biến mất? Kiểm tra xem lỗ mở có còn hiển thị trong bitmap đã chuẩn bị và ngưỡng đã chọn hay không. Nếu ngưỡng đã lấp đầy, hãy thay đổi bước chuẩn bị hoặc điểm cắt và truy xuất lại. Nếu SVG chứa phần mở đầu nhưng chỉ có ứng dụng nhận lấp đầy nó, hãy kiểm tra việc xử lý đường dẫn hỗn hợp và quy tắc điền ở đó.
Nguồn
- Potrace — Thủ công — Các định dạng đầu vào được hỗ trợ, ngưỡng đơn sắc, đầu ra SVG và các tùy chọn lệnh được đặt tên.
- Pillow — Mô-đun hình ảnh — Kết hợp hình ảnh RGBA và thứ tự được sử dụng trong đoạn mã chuẩn bị.
- W3C — Thông số PNG — Mẫu màu và biểu diễn alpha trong hình ảnh PNG.
- W3C — Đường dẫn SVG — Đường dẫn phức hợp và đường viền bên trong có thể mô tả các lỗ mở.
Bắt đầu miễn phí với hình ảnh của riêng bạn trong PerfectVector, sau đó kiểm tra hình bóng và các lỗ bên trong của nó so với nguồn trước khi chọn bước chỉnh sửa tiếp theo.
Thêm từ blog
Đồ nét ảnh bằng SVGcode: Kiểm tra hình đã xuất
Vẽ hình ảnh màu phẳng trong SVGcode, sao chép SVG thực tế và kiểm tra bảng màu, các lỗ mở bên trong, nền và canvas trước khi sử dụng tệp trong thiết kế của bạn.
ImageMagick PNG sang SVG: Kiểm tra bộ đồ nét
Tìm hiểu xem lệnh ImageMagick PNG-to-SVG của bạn có tạo đường dẫn hay không, đường dẫn mà nó sử dụng và lý do tại sao hình ảnh màu có thể trở thành dấu vết SVG đơn sắc.


