Deze pagina wordt in het Nederlands getoond, de taal waar je browser om vraagt.
De code van deze pagina is niet gestart.
Open je index.html rechtstreeks uit een map, dan worden JavaScript-modules geblokkeerd en gebeurt er niets zodra je een svg kiest. Serveer de map in plaats daarvan over http:
Gaat open zodra je hierboven een bestand kiest.klaar — verbreek de verbinding en dit blijft gewoon werken.niet beschikbaar in deze browser (al het andere werkt gewoon).heeft https:// of localhost nodig om offline te kunnen bewaren.bewaren lukt hier niet, maar er wordt hoe dan ook niets geüpload.Je bestanden zijn nergens heen gegaan. {total} bestanden geladen, allemaal van deze site zelf. {platform}Iets heeft {hosts} benaderd, en dat doet dit gereedschap nooit. Dat is het waard om na te kijken. {platform}De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} host; geen daarvan heeft een bestand of een byte ervan gekregen.De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} hosts; geen daarvan heeft een bestand of een byte ervan gekregen.Er ging iets mis: {detail}. Herlaad de pagina om opnieuw te beginnen.{count} bestand wordt gelezen…{count} bestanden worden gelezen…Een voorbeeld proberenVoorbeeld wordt gemaakt…Deze browser kon het voorbeeld niet maken. Kies in plaats daarvan een bestand.
SVG naar afbeelding — een vector op elk formaat naar png, jpeg of WebP
Noem het formaat. Een vector heeft er zelf geen om te verliezen.
● Je svg-bestanden worden nooit geüpload. Er is geen server.
Het tekenwerk wordt gerasterd door dezelfde motor die het zojuist op je scherm zette. Je bestand wordt van je schijf gelezen, zijn worteltag wordt naar het gevraagde formaat herschreven door honderd regels in src/svg.js die je kunt lezen, en het wordt op een canvas getekend dat je browser toch al meelevert. Deze tool heeft geen enkele netwerkfunctie, dus er valt niets op te halen en niets te versturen. En al was die er wel, dan stond aan de andere kant van deze pagina nog steeds geen server om een logo naartoe te sturen.
✗ Geen upload
✗ Geen account
✗ Geen watermerk
✓ Werkt offline
✓ Open source
Live controle:bezig met controleren…
Offline:bezig met controleren…
Geloof ons vooral niet op ons woord. Open DevTools, hou het tabblad “Netwerk” in de gaten en raster iets. Geen enkel verzoek draagt een bestand, een miniatuur, een bestandsnaam of ook maar één byte van wat je koos. Of trek de stekker uit je internet en zet er alsnog een om.
Hoe je de privacybelofte controleert
Je tekenwerk kan nergens heen. In de Content-Security-Policy staat elk adres dat deze pagina mag benaderen, en geen daarvan hoort bij deze site. Er is hier geen eindpunt waar je bestanden verzameld zouden kunnen worden, en in de code staat niets wat ze zou versturen als dat eindpunt er wel was.
Niets hier haalt iets op. In src/ staat nergens een fetch, een XMLHttpRequest of een sendBeacon. De hele rasteraar bestaat uit een <img> met een blob van je eigen bestand erin, één drawImage op een canvas, en één canvas.toBlob.
Een svg is een document, en dit is de modus waarin het niets kan doen. Een svg kan een <script>, een externe <image href="https://…">, een stylesheet en een weblettertype meedragen. Getekend via een <img> zit hij in wat de specificatie secure static mode noemt, en dan draait het script niet en wordt geen van die adressen opgehaald. Dat is een garantie van de browser en geen belofte van ons, en juist daarom kan deze pagina een bestand openen dat ze nooit eerder gezien heeft zonder dat dat bestand naar huis kan bellen.
Wat Google laadt, en wat het niet te zien krijgt. De advertentie- en meetscripts komen van Google, de doneerknop van Buy Me a Coffee. Geen van alle krijgt iets over je tekening mee. Elke regel die een bestand leest, op formaat zet of tekent, wordt vanaf deze herkomst geserveerd en staat in de repository.
Het werkt offline. Verbreek de verbinding en de tool werkt onveranderd door, omdat er nooit een netwerkstap in zat. Eenvoudiger bewijs bestaat er niet.
Controleer het zelf. Je hoeft niets van het bovenstaande op ons woord aan te nemen. Een buildscript maakt deze pagina uit de sjablonen en de configuratie in de repository, en dat script kun je lezen en zelf draaien. Het resultaat staat vastgelegd op de branch dist, dus je kunt wat er geserveerd wordt vergelijken met wat een build van de bronnen oplevert:
De bestanden die je als eerste wilt lezen zijn config/site.toml voor de Content-Security-Policy, src/svg.js voor hoe het eigen formaat van een bestand gelezen wordt en hoe zijn worteltag herschreven wordt, en src/render.js voor de acht regels die het rasteren doen: een <img>, een drawImage en een toBlob, met niets ertussen.
Als de beveiligingssoftware van je werkgever voor een upload waarschuwt. Die let op het moment dat er in een browser een bestand wordt gekozen, en kan niet weten of de pagina het wil versturen — dus waarschuwt hij bij het kiezen. Hier wordt niets verstuurd: open de ontwikkelaarstools, ga naar Netwerk en kies een bestand. Er is geen verzoek dat het meeneemt, en helemaal geen verzoek behalve de lokale voorbeeldweergave van de pagina. Diezelfde controle doet je IT-afdeling in een halve minuut.
1 Kies de svg-bestanden
2 Zeg hoe groot het moet worden
Dit is de ene vraag die een vector niet voor je kan beantwoorden. In een svg zitten geen pixels maar tekeninstructies, en die volgt hij op elk formaat dat je noemt. Het getal hieronder is dus geen grens waar je tegenaan duwt, zoals dat bij een foto wel zou zijn. 4000 pixels uit een icoon van 24 pixels is precies zo scherp als die 24 was.
Elk bestand op de lijst wordt vanaf zijn eigen formaat vermenigvuldigd, dus een stapel iconen die op verschillende formaten getekend zijn, blijft onderling in verhouding.
De hoogte volgt uit de vorm van de tekening.
De breedte volgt uit de vorm van de tekening.
Welke zijde de langste is wordt dit en de andere volgt, dus een breed logo en een hoog logo komen er even groot op hun lange zijde uit.
3 Kies het bestandstype
Kwaliteit — 90 Alleen voor JPEG en WebP, want PNG heeft geen kwaliteitsknop omdat het verliesloos is. Een verliesgevende encoder gaat het slechtst om met vlakke kleur en harde randen, en daar bestaat een svg nu juist vooral uit. Daarom staat deze hier hoger dan bij een foto.
4 Bekijk het, en sla het dan op
De voorvertoning wordt getekend door dezelfde code die het bestand schrijft, uit het bestand dat je koos, op dit apparaat. Let vooral op de twee dingen die veranderen zodra een tekening pixels wordt. Een haarlijn die een halve pixel breed was is grijs geworden, en tekst wordt getekend in een lettertype dat dit apparaat heeft in plaats van in een dat van het web gehaald wordt.
Voeg een svg toe en hij verschijnt hier.
Klaar
{name}: dit gereedschap leest alleen SVG-bestanden. Een PNG of een JPEG bestaat al uit pixels; daarvoor is Afbeeldingsformaat wijzigen.{name}: er zit geen <svg>-element in dit bestand.Er zit geen <svg>-element in dit bestand.{name}: {why}Deze browser kon de SVG niet tekenen. Het is misschien geen geldige XML.Deze browser wilde op dat formaat geen {format} schrijven.→ {size}→ te groot: {why}Voeg een SVG toe, dan staat hier hoe groot hij eruit komt.Het bestand tekent zichzelf op {fromWidth} × {fromHeight}; hier komt {width} × {height} uit, dat is {times} zoveel.De vorm wordt uitgerekt om het kader te vullen, dus de tekening wordt vervormd.Hij staat midden in het kader, met de achtergrond aan weerszijden zichtbaar.{width} × {height} op @{d}xPlus {list}.{width} × {height} gaat over de grens van {max} pixels heen die een canvas per zijde heeft. Er zou niets terugkomen dan een leeg beeld.{size} is meer dan een browser aankan — dat is {mb} MB canvas nog voordat er iets gecodeerd is. Er is een kleiner formaat nodig.{size} gaat over het plafond van {ceiling} megapixel heen dat Safari op een iPhone of iPad heeft. Op een desktop werkt het; op een telefoon komt het misschien leeg terug.{n} megapixelVerliesvrij, en de enige van de drie die elk programma leest. Vlakke kleur en harde randen — en daar bestaat een tekening grotendeels uit — comprimeren er goed in, dus een gerasterd logo is als PNG meestal toch al kleiner dan als JPEG.Geen transparantie, en verliesgevend op precies de manier die bij dit soort plaatje het meest opvalt: een krans van spikkels rond elke harde rand. De moeite waard voor een tekening die vooral uit fotoachtige verlopen bestaat, en verder zelden.Transparantie als een PNG, en bij gelijke kwaliteit een kleiner bestand dan de andere twee. Elke huidige browser leest het; oudere programma’s en sommige drukkerijen openen er nog steeds geen.Deze browser kan geen WebP schrijven, dus er zou een PNG uitkomen. Kies een van de andere twee.De transparante delen van de tekening blijven transparant.Achter het hele beeld gelegd, dus in het bestand is niets transparant.{format} kent geen transparantie, dus deze kleur wordt achter de tekening gelegd. Zonder die kleur zou alles wat transparant was zwart worden.Getoond op het formaat dat het krijgt.Getoond op {times} van het bestand van {size}, opnieuw getekend uit de vector in plaats van verkleind — dus zo ziet dat formaat eruit.Het schaakbordpatroon is waar het bestand transparant wordt.{a} {b}{a} en {b}{a} · {b}{a}, {b}{n} B{n} KB{n} MBDe afbeelding makenDe {count} afbeeldingen makenEén bestand gekozen{count} bestanden gekozenEén afbeelding tekenen…{count} afbeeldingen tekenen…{name} tekenen…Klaar.{name}, {size}, {bytes}.{count} afbeeldingen geschreven uit {drawings} tekeningen, {bytes} in totaal.{size} — de maat die het bestand vraagt{size} — de ene zijde uit het bestand, de andere uit de viewBox{size} — geen pixelmaat, uit de viewBox gehaald{size} aangenomen — dit bestand noemt geen maat en geen viewBoxDeze in het voorbeeld tonen{name} van de lijst halenUit {name}, dat zichzelf op {size} tekent — {times} daarvan.Uit {name}, dat zichzelf op {size} tekent — {times} daarvan, en de @{density}x van het bestand erboven.DownloadenWebP — deze browser kan het niet schrijvenJe bestanden zijn nergens heen gegaan. {total} bestanden geladen, allemaal van deze site zelf. {platform}Iets heeft {hosts} benaderd, en dat doet dit gereedschap nooit. Dat is het waard om na te kijken. {platform}De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} host; geen daarvan heeft een bestand of een byte ervan gekregen.De eigen scripts van de site voor advertenties, meting en de donatieknop kwamen van {hosts} hosts; geen daarvan heeft een bestand of een byte ervan gekregen.
Heeft dit geholpen?
Wat ging er mis?
Bedankt — daar hebben we wat aan.
Alleen je antwoord wordt verstuurd, en alleen als je op een knop drukt. Nooit je bestand, niet de naam ervan, en niets erover.
# SVG naar afbeelding — een vector op elk formaat naar png, jpeg of WebP
Noem het formaat. Een vector heeft er zelf geen om te verliezen.
> Zet een svg om naar png, jpeg of WebP op elk formaat, in je browser. Noem de breedte, een factor of een kader; krijg er @2x- en @3x-kopieën bij. Transparantie blijft, er wordt niets geüpload.
Deze pagina is een interactief hulpmiddel dat volledig in je browser draait, op https://abox.tools/nl/svg-naar-png/ — niets van wat je het geeft wordt geüpload. Hieronder staat alles wat de pagina er in woorden over zegt; om het te gebruiken, open je het adres.
## Je svg-bestanden worden **nooit geüpload**. Er is geen server.
Het tekenwerk wordt gerasterd door dezelfde motor die het zojuist op je scherm zette. Je bestand wordt van je schijf gelezen, zijn worteltag wordt naar het gevraagde formaat herschreven door honderd regels in `src/svg.js` die je kunt lezen, en het wordt op een canvas getekend dat je browser toch al meelevert. Deze tool heeft geen enkele netwerkfunctie, dus er valt niets op te halen en niets te versturen. En al was die er wel, dan stond aan de andere kant van deze pagina nog steeds geen server om een logo naartoe te sturen.
- ✗ Geen upload
- ✗ Geen account
- ✗ Geen watermerk
- ✓ Werkt offline
- ✓ Open source
## Zo zet je een svg om naar een png zonder hem te uploaden
1. **Kies de svg.** Sleep er een het vak in, of kies een map vol en zet ze in één keer om. De browser leest het bestand rechtstreeks van je schijf, en er gaat ondertussen niets ergens heen. Bij elke regel staat welk formaat het bestand denkt te hebben, en dat wordt er anders bij gezegd wanneer dat formaat uit de `viewBox` kwam of aangenomen is omdat het bestand er geen opgeeft.
2. **Zeg hoe groot.** Een factor van het eigen formaat van het bestand is het snelste antwoord, en voor een stapel ook het juiste. Elke tekening wordt dan vanaf zijn eigen beginpunt geschaald, waardoor een set iconen onderling in verhouding blijft. Anders noem je een breedte, een hoogte, de langste zijde, of een kader met beide zijden erbij. Een groot getal kost je hier niets, anders dan bij een foto, want de tekening wordt op dat formaat opnieuw getekend en er niet naartoe uitgerekt.
3. **Voeg de hi-dpi-kopieën toe als je ze nodig hebt.** Een telefoon en een Retina-laptop tekenen twee of drie apparaatpixels per CSS-pixel, dus een logo van 200 pixels heeft een bestand van 400 of 600 pixels achter zich nodig. Vraag om `@2x` en `@3x` en ze komen eruit met de namen die Xcode, het gereedschap van Android en CSS `image-set()` alle drie verwachten, en elk is precies twee of drie keer de eerste in plaats van apart afgerond.
4. **Kies het bestandstype en beslis over transparantie.** Png, tenzij je een reden hebt om iets anders te nemen, want het is verliesloos, het houdt transparantie en vlakke kleur comprimeert er goed in. Jpeg kent helemaal geen transparantie, dus daar wordt hoe dan ook een achtergrondkleur in geschilderd, of je er nu een kiest of niet. Kies je er geen, dan komt elke transparante pixel er zwart uit. WebP doet allebei en maakt een kleiner bestand, alleen leest software die oud genoeg is het niet.
5. **Kijk naar de voorvertoning voordat je downloadt.** Die wordt getekend door dezelfde code die het bestand schrijft, uit jouw bestand, op jouw apparaat. Zodra een tekening pixels wordt veranderen er twee dingen, en allebei zie je ze hier. Een haarlijn die een halve pixel breed was wordt grijs, en tekst wordt getekend in een lettertype dat deze computer heeft in plaats van in een dat van het web gehaald wordt.
6. **Neem de bestanden mee.** Eén download per bestand, of de hele stapel als één zip. De namen volgen de svg waar ze uit kwamen, met `@2x` en `@3x` op de kopieën, en twee bestanden die dezelfde naam gekregen zouden hebben, worden genummerd in plaats van dat de een de ander stilletjes vervangt.
## De uitgebreide versie
[Hoe je een svg naar een png omzet op het juiste formaat](https://abox.tools/nl/gidsen/een-svg-naar-png-omzetten/): Een vector heeft zelf geen pixelformaat, dus het getal kies jij. Waar dat getal vandaan komt voor een scherm, een app-icoon en een printer, en wat er verandert wanneer een tekening pixels wordt.
## Ook in de gereedschapskist
- [Afbeelding naar SVG](https://abox.tools/nl/afbeelding-naar-svg/): Eén vorm, één omtrek. Wijs aan wat er niet in hoort.
- [Lengtevergelijker](https://abox.tools/nl/lengtes-vergelijken/): Typ de lengtes, neem de afbeelding mee. Er wordt niets verstuurd om hem te tekenen.
- [Afbeeldingscompressor](https://abox.tools/nl/afbeelding-comprimeren/): Jij noemt de grootte. De rest rekent de tool uit.
- [Afbeeldingsformaat wijzigen](https://abox.tools/nl/afbeelding-formaat-wijzigen/): Noem het formaat. Sleep het kader. Kies het bestandstype.
## Vragen
### Wordt mijn svg ergens heen geüpload?
Nee. Je eigen browser leest het bestand op je eigen hardware, tekent het op een canvas met dezelfde motor die elk ander plaatje rendert dat je ziet, en geeft het als download terug. Deze tool heeft geen enkele netwerkfunctie en haalt dus nooit iets op en verstuurt nooit iets. In de `Content-Security-Policy` van de pagina staat bovendien elk adres dat hij mag benaderen, en geen daarvan hoort bij deze site.
### Op welk formaat moet ik een svg rasteren?
Op wat het ding dat hem leest vraagt, vermenigvuldigd met de pixelverhouding van het scherm waarop hij gezien wordt. Een logo dat 200 CSS-pixels beslaat, heeft er 400 nodig voor een Retina-laptop en 600 voor een recente telefoon, en dat zijn hier de `@2x`- en `@3x`-kopieën. Voor een app-icoon of een winkelvermelding noemt de winkel een exact getal, en dat is het getal. Heeft niets je iets verteld, dan is 1024 op de langste zijde een bruikbare standaard: groot genoeg voor vrijwel elk gebruik en klein genoeg om te mailen.
### Kost het groter maken kwaliteit?
Nee, en dit is de ene plek waar dat antwoord eerlijk nee is. Een vector is instructies in plaats van pixels, dus de browser tekent de krommen opnieuw op welk formaat er ook gevraagd wordt. 4000 pixels uit een icoon van 24 pixels is precies zo scherp als die 24 was. Wat je niet kunt, is de andere kant op: zodra het een png is, is het pixels als al het andere, dus raster op het formaat dat je nodig hebt in plaats van het resultaat later te schalen.
### Mijn svg heeft geen breedte of hoogte. Welk formaat krijg ik?
De `viewBox`, als die er is. De breedte en hoogte daarvan zijn gebruikerseenheden en geen pixels, maar het zijn de enige getallen in het bestand en een browser behandelt ze als het natuurlijke formaat van de tekening. Is er ook geen viewBox, dan zet de pagina *aangenomen* naast de regel en gebruikt ze 300 × 150, en dat is waarop een `<img>` hem getekend zou hebben. Hoe dan ook kun je zelf het gewenste formaat noemen en wordt het bestand op dat formaat getekend.
### Waarom ziet de tekst er in de png anders uit?
Omdat het lettertype niet in de svg zit. Een svg die tekst tekent noemt een lettertype en laat het aan de machine over om het te vinden, en een bestand dat er een met een `@import` van Google Fonts haalt, krijgt hier niets, want een svg die via een `<img>` getekend wordt mag niets ophalen. Dat is dezelfde regel die hem belet met jouw bestand naar huis te bellen. De oplossing kent elke ontwerper al: zet de tekst in het tekenprogramma om naar paden voordat je exporteert. Dan is het meetkunde, en dan ziet het er overal hetzelfde uit.
### Kan hij meerdere bestanden tegelijk omzetten?
Ja. Elke svg op de lijst wordt met dezelfde instellingen gerenderd en de stapel komt binnen als één zip. Voor een stapel is een factor meestal de juiste instelling, dus zoiets als “4× het formaat dat het bestand vraagt”. Elke tekening wordt dan vanaf zijn eigen formaat geschaald in plaats van dat ze allemaal naar hetzelfde aantal pixels gedwongen worden. Klik op een regel om die in de voorvertoning te zetten.
### Zit er een groottelimiet op?
Die van de browser, niet die van ons. Een canvas geeft het ergens voorbij 16.384 pixels op een zijde op, en Safari op een iPhone of iPad stopt al bij zo'n 16,7 megapixel oppervlak, oftewel 4096 × 4096. Daarboven waarschuwt de pagina je in plaats van je een leeg plaatje te geven, want dat is wat een browser doet zodra hij op is. `toBlob` geeft dan helemaal niets terug, zonder foutmelding die zichzelf uitlegt. Voorbij 100 megapixel weigert de tool, omdat dat 400 MB canvas is nog voordat er één byte gecodeerd is.
### Wat gebeurt er met transparantie?
Die blijft, in png en in WebP. Jpeg heeft helemaal geen alfakanaal, dus daar wordt hoe dan ook een kleur achter het hele plaatje geschilderd, of je er nu om vraagt of niet. Zonder die kleur zou alles wat transparant is er zwart uit komen, en dat ziet eruit als een fout in plaats van als jpeg. Ook bij png is een achtergrondkleur kiezen een volstrekt normale wens, want dan wordt de tekening op die kleur platgeslagen in plaats van dat er een gat blijft.
### Kan hij een svg lezen met een script of een externe afbeelding erin?
Lezen kan hij, en hij tekent precies de delen die een browser bereid is te tekenen. Een svg die via een `<img>` geladen wordt zit in *secure static mode*. Scripts draaien dan niet, externe verwijzingen worden niet opgehaald en animatie speelt niet, dus je krijgt het eerste frame. Een bestand met een externe `<image>` erin komt er dus uit met dat deel eruit. Dat is de browser die namens jou weigert, en juist daarom kan deze pagina veilig een bestand openen dat ze nooit eerder gezien heeft.
### Wat is het verschil tussen dit en Afbeeldingsformaat wijzigen?
De bron. [Afbeeldingsformaat wijzigen](https://abox.tools/nl/afbeelding-formaat-wijzigen/) begint bij pixels, bij een jpeg of een png, dus daar moet groter maken detail verzinnen dat er nooit geweest is. Dit begint bij een tekening, dus valt er niets te verzinnen en is er geen bovengrens om je druk over te maken. Heb je een svg, dan levert deze je een scherp resultaat. Heb je een foto, dan zit je bij die andere goed.
### Is het gratis, en heb ik een account nodig?
Het is gratis, en er komt geen account, geen inlog, geen proefperiode en geen watermerk aan te pas. Er zit ook geen limiet op het aantal bestanden of op de grootte ervan, omdat er geen server is die daarvoor betaalt: het werk gebeurt op je eigen apparaat. De site draait op advertenties, en die betalen hem. Die advertenties krijgen niets over je bestanden mee.
### Werkt het offline?
Ja. Laad de pagina één keer, verbreek daarna je internetverbinding en hij werkt gewoon door. Dat is meteen de eenvoudigste manier om te bewijzen dat er niets geüpload wordt, want een tool die je tekenwerk wegstuurde om het te laten renderen zou ermee ophouden zodra je de stekker eruit trok.
## Hoe je de privacybelofte controleert
- **Je tekenwerk kan nergens heen.** In de Content-Security-Policy staat elk adres dat deze pagina mag benaderen, en geen daarvan hoort bij deze site. Er is hier geen eindpunt waar je bestanden verzameld zouden kunnen worden, en in de code staat niets wat ze zou versturen als dat eindpunt er wel was.
- **Niets hier haalt iets op.** In `src/` staat nergens een `fetch`, een `XMLHttpRequest` of een `sendBeacon`. De hele rasteraar bestaat uit een `<img>` met een blob van je eigen bestand erin, één `drawImage` op een canvas, en één `canvas.toBlob`.
- **Een svg is een document, en dit is de modus waarin het niets kan doen.** Een svg kan een `<script>`, een externe `<image href="https://…">`, een stylesheet en een weblettertype meedragen. Getekend via een `<img>` zit hij in wat de specificatie *secure static mode* noemt, en dan draait het script niet en wordt geen van die adressen opgehaald. Dat is een garantie van de browser en geen belofte van ons, en juist daarom kan deze pagina een bestand openen dat ze nooit eerder gezien heeft zonder dat dat bestand naar huis kan bellen.
- **Wat Google laadt, en wat het niet te zien krijgt.** De advertentie- en meetscripts komen van Google, de doneerknop van Buy Me a Coffee. Geen van alle krijgt iets over je tekening mee. Elke regel die een bestand leest, op formaat zet of tekent, wordt vanaf deze herkomst geserveerd en staat in de repository.
- **Het werkt offline.** Verbreek de verbinding en de tool werkt onveranderd door, omdat er nooit een netwerkstap in zat. Eenvoudiger bewijs bestaat er niet.
**Controleer het zelf.** Je hoeft niets van het bovenstaande op ons woord aan te nemen. Een buildscript maakt deze pagina uit de sjablonen en de configuratie in de repository, en dat script kun je lezen en zelf draaien. Het resultaat staat vastgelegd op de branch `dist`, dus je kunt wat er geserveerd wordt vergelijken met wat een build van de bronnen oplevert: https://github.com/A-Box-of-Tools/website
De bestanden die je als eerste wilt lezen zijn `config/site.toml` voor de Content-Security-Policy, `src/svg.js` voor hoe het eigen formaat van een bestand gelezen wordt en hoe zijn worteltag herschreven wordt, en `src/render.js` voor de acht regels die het rasteren doen: een <img>, een `drawImage` en een `toBlob`, met niets ertussen.
Zo zet je een svg om naar een png zonder hem te uploaden
Kies de svg. Sleep er een het vak in, of kies een map vol en zet ze in één keer om. De browser leest het bestand rechtstreeks van je schijf, en er gaat ondertussen niets ergens heen. Bij elke regel staat welk formaat het bestand denkt te hebben, en dat wordt er anders bij gezegd wanneer dat formaat uit de viewBox kwam of aangenomen is omdat het bestand er geen opgeeft.
Zeg hoe groot. Een factor van het eigen formaat van het bestand is het snelste antwoord, en voor een stapel ook het juiste. Elke tekening wordt dan vanaf zijn eigen beginpunt geschaald, waardoor een set iconen onderling in verhouding blijft. Anders noem je een breedte, een hoogte, de langste zijde, of een kader met beide zijden erbij. Een groot getal kost je hier niets, anders dan bij een foto, want de tekening wordt op dat formaat opnieuw getekend en er niet naartoe uitgerekt.
Voeg de hi-dpi-kopieën toe als je ze nodig hebt. Een telefoon en een Retina-laptop tekenen twee of drie apparaatpixels per CSS-pixel, dus een logo van 200 pixels heeft een bestand van 400 of 600 pixels achter zich nodig. Vraag om @2x en @3x en ze komen eruit met de namen die Xcode, het gereedschap van Android en CSS image-set() alle drie verwachten, en elk is precies twee of drie keer de eerste in plaats van apart afgerond.
Kies het bestandstype en beslis over transparantie. Png, tenzij je een reden hebt om iets anders te nemen, want het is verliesloos, het houdt transparantie en vlakke kleur comprimeert er goed in. Jpeg kent helemaal geen transparantie, dus daar wordt hoe dan ook een achtergrondkleur in geschilderd, of je er nu een kiest of niet. Kies je er geen, dan komt elke transparante pixel er zwart uit. WebP doet allebei en maakt een kleiner bestand, alleen leest software die oud genoeg is het niet.
Kijk naar de voorvertoning voordat je downloadt. Die wordt getekend door dezelfde code die het bestand schrijft, uit jouw bestand, op jouw apparaat. Zodra een tekening pixels wordt veranderen er twee dingen, en allebei zie je ze hier. Een haarlijn die een halve pixel breed was wordt grijs, en tekst wordt getekend in een lettertype dat deze computer heeft in plaats van in een dat van het web gehaald wordt.
Neem de bestanden mee. Eén download per bestand, of de hele stapel als één zip. De namen volgen de svg waar ze uit kwamen, met @2x en @3x op de kopieën, en twee bestanden die dezelfde naam gekregen zouden hebben, worden genummerd in plaats van dat de een de ander stilletjes vervangt.
De uitgebreide versie
Hoe je een svg naar een png omzet op het juiste formaatEen vector heeft zelf geen pixelformaat, dus het getal kies jij. Waar dat getal vandaan komt voor een scherm, een app-icoon en een printer, en wat er verandert wanneer een tekening pixels wordt.
Nee. Je eigen browser leest het bestand op je eigen hardware, tekent het op een canvas met dezelfde motor die elk ander plaatje rendert dat je ziet, en geeft het als download terug. Deze tool heeft geen enkele netwerkfunctie en haalt dus nooit iets op en verstuurt nooit iets. In de Content-Security-Policy van de pagina staat bovendien elk adres dat hij mag benaderen, en geen daarvan hoort bij deze site.
Op welk formaat moet ik een svg rasteren?
Op wat het ding dat hem leest vraagt, vermenigvuldigd met de pixelverhouding van het scherm waarop hij gezien wordt. Een logo dat 200 CSS-pixels beslaat, heeft er 400 nodig voor een Retina-laptop en 600 voor een recente telefoon, en dat zijn hier de @2x- en @3x-kopieën. Voor een app-icoon of een winkelvermelding noemt de winkel een exact getal, en dat is het getal. Heeft niets je iets verteld, dan is 1024 op de langste zijde een bruikbare standaard: groot genoeg voor vrijwel elk gebruik en klein genoeg om te mailen.
Kost het groter maken kwaliteit?
Nee, en dit is de ene plek waar dat antwoord eerlijk nee is. Een vector is instructies in plaats van pixels, dus de browser tekent de krommen opnieuw op welk formaat er ook gevraagd wordt. 4000 pixels uit een icoon van 24 pixels is precies zo scherp als die 24 was. Wat je niet kunt, is de andere kant op: zodra het een png is, is het pixels als al het andere, dus raster op het formaat dat je nodig hebt in plaats van het resultaat later te schalen.
Mijn svg heeft geen breedte of hoogte. Welk formaat krijg ik?
De viewBox, als die er is. De breedte en hoogte daarvan zijn gebruikerseenheden en geen pixels, maar het zijn de enige getallen in het bestand en een browser behandelt ze als het natuurlijke formaat van de tekening. Is er ook geen viewBox, dan zet de pagina aangenomen naast de regel en gebruikt ze 300 × 150, en dat is waarop een <img> hem getekend zou hebben. Hoe dan ook kun je zelf het gewenste formaat noemen en wordt het bestand op dat formaat getekend.
Waarom ziet de tekst er in de png anders uit?
Omdat het lettertype niet in de svg zit. Een svg die tekst tekent noemt een lettertype en laat het aan de machine over om het te vinden, en een bestand dat er een met een @import van Google Fonts haalt, krijgt hier niets, want een svg die via een <img> getekend wordt mag niets ophalen. Dat is dezelfde regel die hem belet met jouw bestand naar huis te bellen. De oplossing kent elke ontwerper al: zet de tekst in het tekenprogramma om naar paden voordat je exporteert. Dan is het meetkunde, en dan ziet het er overal hetzelfde uit.
Kan hij meerdere bestanden tegelijk omzetten?
Ja. Elke svg op de lijst wordt met dezelfde instellingen gerenderd en de stapel komt binnen als één zip. Voor een stapel is een factor meestal de juiste instelling, dus zoiets als “4× het formaat dat het bestand vraagt”. Elke tekening wordt dan vanaf zijn eigen formaat geschaald in plaats van dat ze allemaal naar hetzelfde aantal pixels gedwongen worden. Klik op een regel om die in de voorvertoning te zetten.
Zit er een groottelimiet op?
Die van de browser, niet die van ons. Een canvas geeft het ergens voorbij 16.384 pixels op een zijde op, en Safari op een iPhone of iPad stopt al bij zo'n 16,7 megapixel oppervlak, oftewel 4096 × 4096. Daarboven waarschuwt de pagina je in plaats van je een leeg plaatje te geven, want dat is wat een browser doet zodra hij op is. toBlob geeft dan helemaal niets terug, zonder foutmelding die zichzelf uitlegt. Voorbij 100 megapixel weigert de tool, omdat dat 400 MB canvas is nog voordat er één byte gecodeerd is.
Wat gebeurt er met transparantie?
Die blijft, in png en in WebP. Jpeg heeft helemaal geen alfakanaal, dus daar wordt hoe dan ook een kleur achter het hele plaatje geschilderd, of je er nu om vraagt of niet. Zonder die kleur zou alles wat transparant is er zwart uit komen, en dat ziet eruit als een fout in plaats van als jpeg. Ook bij png is een achtergrondkleur kiezen een volstrekt normale wens, want dan wordt de tekening op die kleur platgeslagen in plaats van dat er een gat blijft.
Kan hij een svg lezen met een script of een externe afbeelding erin?
Lezen kan hij, en hij tekent precies de delen die een browser bereid is te tekenen. Een svg die via een <img> geladen wordt zit in secure static mode. Scripts draaien dan niet, externe verwijzingen worden niet opgehaald en animatie speelt niet, dus je krijgt het eerste frame. Een bestand met een externe <image> erin komt er dus uit met dat deel eruit. Dat is de browser die namens jou weigert, en juist daarom kan deze pagina veilig een bestand openen dat ze nooit eerder gezien heeft.
Wat is het verschil tussen dit en Afbeeldingsformaat wijzigen?
De bron. Afbeeldingsformaat wijzigen begint bij pixels, bij een jpeg of een png, dus daar moet groter maken detail verzinnen dat er nooit geweest is. Dit begint bij een tekening, dus valt er niets te verzinnen en is er geen bovengrens om je druk over te maken. Heb je een svg, dan levert deze je een scherp resultaat. Heb je een foto, dan zit je bij die andere goed.
Is het gratis, en heb ik een account nodig?
Het is gratis, en er komt geen account, geen inlog, geen proefperiode en geen watermerk aan te pas. Er zit ook geen limiet op het aantal bestanden of op de grootte ervan, omdat er geen server is die daarvoor betaalt: het werk gebeurt op je eigen apparaat. De site draait op advertenties, en die betalen hem. Die advertenties krijgen niets over je bestanden mee.
Werkt het offline?
Ja. Laad de pagina één keer, verbreek daarna je internetverbinding en hij werkt gewoon door. Dat is meteen de eenvoudigste manier om te bewijzen dat er niets geüpload wordt, want een tool die je tekenwerk wegstuurde om het te laten renderen zou ermee ophouden zodra je de stekker eruit trok.