AnyToSVG

Tentang

Vectorizer tanpa wizard

AnyToSVG mengubah bitmap jadi SVG dengan keluarga algoritma yang sama seperti layanan online terkenal — tetapi dijalankan di dalam browser Anda, menampilkan hasilnya sebelum Anda menyentuh pengaturan apa pun, dan tidak pernah meminta Anda login.

Mengapa

Kenapa saya membuatnya

Catatan dari pengembang di balik AnyToSVG dan IconEditor.org.

Saya sudah membuat perangkat lunak selama hampir tiga puluh tahun, dan ternyata cukup banyak waktu terpakai untuk tugas kecil yang membosankan: memasukkan logo seseorang ke format yang bisa diperbesar. Klien mengirim PNG, percetakan meminta SVG, dan konverter online yang saya pakai menyambut dengan antrean upload, pemilih model, tiga calon palet, panel kualitas, panel pengelompokan warna dan — setelah pratinjau akhirnya tampak benar — formulir login dan hitungan kredit.

Anehnya, penelusuran itu sendiri tidak lambat dan tidak rahasia. Algoritma intinya, Potrace, sudah terbuka sejak 2003 dan menelusuri bitmap seukuran logo dalam hitungan milidetik. Wizard empat langkah itu ada bukan karena matematikanya membutuhkannya. Ia ada karena gambar harus dikirim ke server, diproses di sana, dan hasilnya harus diukur pemakaiannya.

Browser modern mengubah itu. Potrace bisa dikompilasi ke WebAssembly dan berjalan dengan kecepatan native di perangkat Anda sendiri, dan analisis warna di sekitarnya hanyalah JavaScript biasa. Jadi AnyToSVG mengerjakan seluruh tugasnya secara lokal: begitu gambar dijatuhkan, gambar dianalisis, pengaturan yang masuk akal dipilih, setiap warna ditelusuri, dan SVG muncul di samping gambar asli. Tidak ada yang diunggah, tidak ada yang dihitung, dan setiap slider menelusuri ulang seketika karena tidak ada perjalanan bolak-balik ke server.

Filosofinya sama dengan IconEditor.org, editor ikon Windows saya: ambil pekerjaan yang sering dilakukan orang, pertahankan bagian yang benar-benar bagus, dan buang semua yang ada hanya untuk membenarkan langganan.

Halaman AnyToSVG dengan logo yang sudah dimuat: pengaturan di kiri, pratinjau bandingkan di tengah, panel hasil dan download di bawah
Konverter setelah sebuah logo dijatuhkan: enam warna terdeteksi, ditelusuri dalam sepersepuluh detik, siap di-download.

Cara kerja

Apa yang terjadi saat Anda menaruh gambar

1 · Analisis

Histogram warna gambar menentukan apakah gambar itu desain warna solid, sketsa garis, atau sesuatu yang mirip foto, berapa banyak warna berbeda yang sebenarnya ada, dan di mana ambang batas hitam putih sebaiknya berada (metode Otsu).

2 · Gradasi, lalu warna

Wilayah yang warnanya berubah halus dicocokkan dengan model linear atau radial dan menjadi satu bentuk dengan gradasi SVG asli. Piksel sisanya dikuantisasi: warna dominan menjadi palet, wilayah kecil tetapi berbeda ditambahkan kemudian, dan halo anti-aliasing di antara wilayah dibersihkan.

3 · Lapisan

Isian ditumpuk dari area terbesar ke atas, dan setiap bentuk masuk satu piksel ke bawah tetangganya di atas, sehingga tidak ada celah tipis di antara bentuk yang bersebelahan — versi lebih ringan dari trik yang disebut "overlap" oleh layanan komersial. Bintik yang lebih kecil dari ukuran Hapus bintik digabung ke bentuk di sekitarnya, bukan dibuang.

4 · Penelusuran

Setiap lapisan adalah mask hitam putih yang diubah Potrace (dikompilasi ke WebAssembly) menjadi path Bézier yang halus. Penghalusan, penghapusan bintik, dan optimasi kurva adalah parameter standar Potrace, ditampilkan sebagai dua slider dan satu preset.

5 · Perakitan SVG

Koordinat Potrace dikembalikan ke kisi piksel asli, satu <path> per isian — warna solid atau <linearGradient> / <radialGradient> di dalam <defs> — dan tidak ada yang lain: tanpa transform, grup, atau metadata. Warna yang disembunyikan dan latar luar tidak disertakan.

6 · Tidak ada yang keluar dari browser

Semua di atas berjalan di Web Worker pada perangkat Anda. Satu-satunya pengecualian adalah format yang tidak bisa dibuka browser Anda (TIFF, PSD, HEIC, PDF): file itu dikonversi ke PNG di server kami, di memori, dan langsung dibuang.

Tampilan bandingkan diperbesar pada cahaya matahari: bitmap di kiri pembatas, gradasi SVG radial di kanan
Langkah 2 dalam praktik. Cahaya matahari dan langit di sekitarnya terdeteksi sebagai satu wilayah halus dan ditulis sebagai satu gradasi radial; pembatas memisahkan PNG (kiri) dari SVG (kanan).
Panel hasil: 6,7 KB, 15 bentuk, 11 isian termasuk 6 gradasi
Apa untungnya. Contoh balon yang ditelusuri hanya dengan warna solid menghasilkan 13 warna dan 56 KB; dengan deteksi gradasi menjadi 11 isian, 15 bentuk, dan 6,7 KB.

Sengaja dibuat kecil

Kredit dan batasan

Mesin penelusurannya adalah Potrace karya Peter Selinger, dipakai di bawah lisensi GPL melalui build esm-potrace-wasm; teks lisensinya disertakan di samping skrip. Analisis warna, pelapisan, dan perakitan SVG adalah JavaScript milik AnyToSVG sendiri, disajikan tanpa minifikasi. Tidak ada skrip, font, atau pelacak pihak ketiga yang dimuat dari domain lain.

Batasan yang jujur: gambar ditelusuri pada maksimal 2048 piksel di sisi terpanjang, jadi hasil scan 6000 piksel dikecilkan dulu. Foto hasilnya seperti poster — itulah yang dilakukan penelusuran. Bayangan halus dideteksi dan ditulis sebagai gradasi SVG asli (linear atau radial), tetapi bayangan yang mengikuti bentuk rumit tetap disederhanakan menjadi beberapa warna solid. Penelusuran garis tengah untuk line art (path goresan tunggal untuk plotter pena) tidak didukung; bentuk selalu berupa garis tepi terisi.

Sekilas

Hal-hal pokok

Harga
Gratis
Akun
Tidak diperlukan
Input
PNG · JPG · GIF · WebP · BMP · SVG · TIFF · PSD · HEIC · PDF
Output
SVG · PNG (1× / 2× / 4×) · clipboard
Warna
2 – 32, atau hitam putih
Ukuran maks.
20 MB · ditelusuri pada ≤ 2048 px
Penyimpanan
Tidak ada di server

Ada pertanyaan, bug, atau ide?

Tulis ke [email protected] — atau langsung taruh gambar di konverter dan buktikan sendiri.

Buka konverter