Potrace PNG’den SVG’ye: alfayı ve boşlukları koruyun
Alfa kanalını hazırladıktan sonra PNG'yi Potrace ile dönüştürün. Test edilmiş bir PGM iş akışını takip edin, eşikleri karşılaştırın ve SVG'nin arka planını ve iç deliklerini kontrol edin.
Bu sayfada
PNG'yi Potrace ile SVG'ye dönüştürmek için önce gri tonlamalı bir bitmap hazırlayın, ardından potrace --svg ile izleyin. Saydam piksellerdeki koyu resimler için, bitmap'i kaydetmeden önce görüntüyü beyaz mat üzerinde birleştirin. SVG'yi kabul etmeden önce eşikli şekilleri ve bunların iç açıklıklarını inceleyin.
Standart Potrace 1.16 doğrudan PNG yerine PBM, PGM, PPM ve BMP'yi okur. Resmi kılavuzu, tek renkli bir izleme işlemini açıklar: ara gölgeler siyah veya beyaz olur. Aşağıdaki iş akışı PNG'nin sürekli alfa değerlerini korumak yerine boş bölgelere sahip katı geometri oluşturur.
Zaten sahip olduğunuz bir görüntü için tarayıcı iş akışını tercih ederseniz PerfectVector, görüntüden yola dönüştürme ve ücretsiz önizleme sunar. Kendi görselinizle ücretsiz başlayın, ardından siluetini, küçük açıklıklarını ve renklerini kaynakla karşılaştırın. Düzenlemeden veya dışa aktarmadan önce sonucun kilidini açın. Yerel Potrace tarifi, açık ön işleme ve tekrarlanabilir komut ayarları istediğinizde kullanışlı olmaya devam eder.
İzlemeden önce ihtiyacınız olan şey
Yüklü bir Potrace yürütülebilir dosyasını, Python 3 ile Pillow ve orijinal PNG'yi kullanın. Bu tarif Potrace 1.16 ve Pillow 11.3.0 ile uygulandı. Girişin bir kopyasını saklayın ve her eşik değişkeninin farklı bir dosya adına sahip olması için ayrı bir klasörde çalışın.
Başlangıç durumu, açık veya şeffaf bir arka plan üzerinde koyu renkli bir logo, simge veya çizimdir. Nesneniz açık veya koyu renkteyse, bu tarifi uygulamadan önce görüntüyü nasıl ters çevireceğinize veya başka şekilde hazırlayacağınıza karar verin. Etkileşimli bir düzenleyici iş akışı için bkz. Inkscape Bitmap İzleme.
Mat, izlemeden önce şeffaf pikselleri çözümlemek için kullanılan düz arka plandır. eşik, hazırlanan görüntüyü ön plana ve arka plana bölen parlaklık sınırıdır. Bu seçimler, kontur SVG geometrisine dönüşmeden önce gerçekleşir.
1. Bitmap'i kaydetmeden önce şeffaflığı çözümleyin
PNG, rengi ve opaklığı ayrı ayrı saklar. Alfa kanalı her pikselin opaklığını tanımlar. PNG spesifikasyonu bu gösterimi açıklamaktadır; tamamen şeffaf bir piksel yine de RGB değerlerini taşıyabilir. Alfa kanalını bırakmak, bu pikselleri bir resim görüntüleyicide görmüş olabileceğiniz beyaz arka plan üzerinde birleştirmez.
Koyu bir işaret için görüntüyü bilinçli olarak beyazın üzerine yerleştirin. Bu Python snippet'i artwork.png'yi açar, onu eşit boyutlu beyaz bir resimde birleştirir, sonucu gri tonlamaya dönüştürür ve artwork.pgm'yi kaydeder:
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")Pillow's alpha_composite belgeleri, ikinci görüntüyü birincinin üzerinde birleştirilmiş olarak tanımlar. Buradaki her iki görüntü de eşleşen boyutlara ve RGBA moduna sahiptir.
İzlemeden önce hazırlanan PGM'yi açın. Dış arka planı beyaz olmalı, amaçlanan ön planı karanlık olmalı ve önemli boşlukları görünür olmalıdır. Bu aşamada siyah bir dikdörtgen bir ön işleme problemidir; SVG doldurma kurallarının daha sonra değiştirilmesi, izleyiciye hiç ulaşmamış bir açıklığı kurtaramaz.

2. Hazırlanan PGM'yi takip edin
Bunu artwork.pgm içeren klasörde çalıştırın:
potrace artwork.pgm --svg --blacklevel 0.5 --turdsize 2 --output artwork.svg--blacklevel 0.5 gri tonlama sınırını seçer. --turdsize 2, Potrace's varsayılan küçük benek bastırma özelliğini açık tutar. Bir ayarı değiştirdiğinizde yeni bir çıktı adı kullanın, ardından tekrar tekrar referansınızın üzerine yazmak yerine dosyaları karşılaştırın.
Tek seferde bir kontrolü değiştirin:
| Kontrol | Neler incelenmeli? |
|---|---|
--blacklevel | Silik izlerin ön plana çıkıp çıkmadığı ve dar açıklıkların boş kalıp kalmadığı |
--turdsize | Küçük izole şekillerin gürültü mü yoksa kasıtlı ayrıntılar mı olduğu |
--alphamax | Köşe tedavisi; ismine rağmen bu bir opaklık kontrolü değildir |
Daha yüksek bir siyah düzeyi eşiği, ön planda daha fazla açık gri piksel içerebilir. Bu, zayıf bir çizgiyi güçlendirebilir veya bir ışık açıklığını kapatabilir. Hazırlanan bitmap'i ve ortaya çıkan konturu birlikte değerlendirin. Düzgünleştirme, eşik dolduktan sonra sayacı yeniden oluşturamaz.
İki orijinal test görselinin gösterdiği şey
İki kontrollü 256 × 256 PNG oluşturduk ve yukarıdaki ön işleme ve Potrace komutlarını çalıştırdık. Bunlardan biri, içinde ve dışında şeffaf pikseller bulunan siyah bir halkaydı. Diğeri ise dar gri bir sayacı olan, kapalı açıklığı işaretin içinde olan, opak, koyu bir işaretti. Oluşturulan SVG'leri bir oluşturucuyla inceledik ve orta ve dış şeffaflığını kontrol ettik.
| Giriş ve hazırlık | Gözlemlenen SVG sonucu |
|---|---|
| Şeffaf halka, gri tonlamalı dönüştürmeden önce alfa atılır | Dolu siyah bir tuval; dışarısı ve amaçlanan açıklık ön plana çıktı |
| Aynı halka, gri tonlamalı dönüştürmeden önce beyaz üzerine birleştirildi | Dışarısı ve ortası boştu; yüzük dolu kaldı |
| Dar gri sayaç, beyaz kompozit, siyah düzeyi 0.5 | Sayaç açık kaldı |
| Aynı hazırlanmış karşı resim, siyah seviye 0.8 | Sayaç dolduruldu |
Halka kontrolünün görünmez pikselleri siyah RGB değerlerini taşıyordu. Alfanın göz ardı edilmesi bu değerleri eşiğe maruz bıraktı. Beyaz kompozit versiyon bunları önce beyaza dönüştürdü. Bu, numunenin kara kutusunu açıklıyor; her PNG'nin aynı şekilde başarısız olacağı iddiası değildir.
Sayaç testi girişi ve diğer ayarları sabit tuttu. Yalnızca eşik değişti. Sonuç, daha koyu görünen bir izin neden otomatik olarak daha iyi bir iz olmadığını gösteriyor. En ağır siluete sahip ortamı seçmek yerine ihtiyacınız olan özelliği inceleyin.
Bunlar, SVG çıktılarında gömülü tarama görüntüsü olmayan iki orijinal test dosyasının dijital kontrolleriydi. Potrace's kalitesini PerfectVector ile karşılaştırmadık, dosyaları bir kesiciye aktarmadık veya fiziksel bir sonucu test etmedik.
3. Kaydedilen SVG'deki delikleri ve arka planı kontrol edin
SVG'yi kontrast oluşturan bir arka plan üzerine yerleştirin. Bu arka plan hem dış alandan hem de amaçlanan her açıklıktan görülmelidir. Beyaz boya, beyaz sayfadaki bir deliğe benzeyebileceğinden, küçük resim tek başına yeterli değildir.
Bir SVG bileşik yol, bir nesne içindeki bir dış konturu ve bir iç açıklığı tanımlayabilir. İzlenen geometride açıklık zaten yoksa, PGM'ye ve eşiğe geri dönün. Bir oluşturucuda mevcutsa ancak içe aktarma sonrasında dolarsa, bunun yerine alıcı uygulamanın yol yorumunu araştırın. SVG deliği sorun giderme kılavuzu bu durumları birbirinden ayırır.
Kaydedilen dosyayı aşağıdakiler açısından kontrol edin:
- amaçlanan siluet ve küçük boşluklar;
- işaretin dışında ve sayaçlarının içinde gerçek boş alan;
- nesne haline gelmemesi gereken başıboş benekler;
- hedef iş akışında uygun bir belge boyutu;
- PNG'nin gömülü bir kopyası yerine yollar.
Yalnızca arka plan hatalı görünüyorsa tüm beyaz nesneleri silmeden önce şeffaf SVG arka plan teşhisini kullanın. Kaynakta gerçekten küçük bir özellik yoksa, daha büyük bir orijinal kullanın veya o ayrıntıyı yeniden çizin. Kaynak kalitesi kılavuzu bu sınırı açıklıyor.
Bu tek renkli iş akışı uygun olduğunda
Potrace, dolu bir siluet ve kasıtlı açıklıklar olarak ifade edilebilecek bir işarete uyar. Korumanız gereken resmin bir parçası yumuşak gölgeleme veya kısmi opaklık olduğunda taramayı koruyun. Birkaç anlamlı renk için renk özellikli bir vektörleştirme iş akışı kullanın veya kasıtlı olarak ayrı geçişler hazırlayın; bu tek monokrom komutu bir renk paleti oluşturmaz.
Kritik bir konturu yeniden çizmek için bir vektör düzenleyiciyi de kullanabilirsiniz. Otomatik izleme, aday bir şekil sağlar ve kullanım amacınız, bu şeklin saklanıp saklanmayacağına veya düzenleneceğine karar verir.
SSS
Potrace PNG'yi doğrudan açabilir mi? Standart Potrace 1.16, PBM, PGM, PPM ve BMP girişini kabul eder. Önce PNG'nin kodunu başka bir görüntü aracıyla çözün, şeffaflık işlemini açık hale getirin ve izlemeden önce desteklenen bir bitmap'i kaydedin.
Potrace PNG şeffaflığını korur mu? Tek renkli iş akışı, dolu geometri ve boş bölgeler oluşturur. PNG'nin sürekli alfa değerlerini korumaz. Eşiklemeden önce şeffaf pikselleri kasıtlı bir mat üzerinde birleştirin, ardından kontrastlı bir arka plan üzerinde SVG'nin boş bölgelerini doğrulayın.
Alfamax, PNG alfa ayarı mıdır? Hayır. Potrace's alphamax, izlenen eğrilerdeki köşe işlemlerini kontrol eder. PNG'nin opaklık kanalının izlemeden önce nasıl birleştirileceğini belirlemez.
Bir delik neden ortadan kayboldu? Hazırlanan bitmapte ve seçilen eşikte açıklığın hala görünür olup olmadığını kontrol edin. Eşik onu dolduruyorsa, hazırlığı veya kesmeyi değiştirin ve yeniden izleyin. SVG açıklığı içeriyorsa ancak yalnızca alıcı bir uygulama dolduruyorsa buradaki bileşik yol ve doldurma kuralı işlemlerini kontrol edin.
Kaynaklar
- Potrace — Manuel — Desteklenen giriş formatları, monokrom eşikleme, SVG çıkışı ve adlandırılmış komut seçenekleri.
- Pillow — Görüntü modülü — RGBA görüntü birleştirme ve hazırlık snippet'inde kullanılan sıra.
- W3C — PNG spesifikasyonu — PNG görüntülerinde renk örnekleri ve alfa gösterimi.
- W3C — SVG yolları — Açıklıkları tanımlayabilen bileşik yollar ve iç konturlar.
PerfectVector'da kendi görselinizle ücretsiz başlayın, ardından bir sonraki düzenleme adımını seçmeden önce siluetini ve iç açıklıklarını kaynağa göre kontrol edin.
Bloga daha fazlası
SVGcode: dışa aktardığınız şekilleri kontrol edin
SVGcode'da düz renkli bir görüntünün izini sürün, gerçek SVG'yi kopyalayın ve dosyayı tasarımınızda kullanmadan önce paletini, iç açıklıklarını, arka planını ve tuvalini kontrol edin.
ImageMagick PNG’den SVG’ye: izleme motorunu kontrol edin
ImageMagick PNG'den SVG'ye komutunuzun yollar oluşturup oluşturmadığını, hangi izleme temsilcisini kullandığını ve renkli bir görüntünün neden tek renkli bir SVG izine dönüşebileceğini öğrenin.


