PNG ke SVG adalah tentang penelusuran gambar dan vektorisasi—konversi gambar raster (jpg/png) menjadi gambar vektor (svg).
Jika Anda kewalahan dengan banyaknya pilihan, konsensus umumnya adalah:
Untuk hasil terbaik dengan gambar beresolusi rendah, proses terlebih dahulu dengan peningkatan gambar AI, lalu lakukan vektorisasi.
Banyak aplikasi yang tercantum di bawah tidak menyertakan versi baris perintah, dan tidak praktis untuk dihosting secara online. Namun, mereka dapat menggunakan skrip dengan aplikasi seperti Keyboard Maestro dan AutoHotkey.
Untuk meng-host konverter Anda sendiri secara online, lihat spesifikasi sumber terbuka dan contoh kode di bawah.
Saya selalu mencari perangkat lunak vektorisasi alternatif lainnya! Buat masalah GitHub dan saya akan menambahkannya ke daftar.
Tujuan awal dokumen ini adalah untuk menguraikan spesifikasi fungsi tanpa server NodeJS untuk mengonversi gambar raster ke SVG, dan menautkan ke repositori lain untuk implementasi.
Dengan demikian, sisa dokumen berfungsi sebagai spesifikasi sederhana tentang bagaimana permintaan dan tanggapan harus disusun untuk mengkonversi antara gambar raster dan SVG. Lihat repositori terkait untuk implementasi spesifikasi.
Pelacakan Gambar
Tanpa server
function ImageInput ( ) {
const [ files , setFiles ] = React . useState < File [ ] > ( ) ;
const onSubmit = ( event ) => {
event . preventDefault ( ) ;
if ( ! files ?. length ) return ;
async function getSvg ( ) {
try {
const formData = new FormData ( ) ;
files . forEach ( ( file , index ) =>
formData . append ( `image- ${ index } ` , file , file . name )
) ;
const response = await axios . post ( url , formData , {
headers : {
"Content-Type" : "multipart/form-data" ,
} ,
} ) ;
} catch ( error ) {
console . log ( error )
}
}
getSvg ( ) ;
} ;
return (
< form onSubmit = { onSubmit } >
< input
id = "file"
name = "file"
type = "file"
multiple
required
accept = "image/jpeg, image/png, image/webp, image/gif, image/svg+xml, image/heic"
onChange = { ( event ) => {
const files = Array . from ( event . target . files ) ;
if ( files ?. length ) {
setFiles ( files ) ;
}
} }
/ >
< / form >
) ;
}
{
"algorithm" : " imagetracerjs " ,
"files" : [
{
"fieldName" : " image-1 " ,
"originalName" : " demo-one.png " ,
"svg" : " <svg>…</svg> "
},
{
"fieldName" : " image-2 " ,
"originalName" : " demo-two.jpg " ,
"svg" : " <svg>…</svg> "
}
]
}
Untuk mendukung kelanjutan pengembangan proyek ini, pertimbangkan untuk berdonasi.
Kontribusi diterima.