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 afbeelding 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.
● Je afbeeldingen worden nooit geüpload. Er is geen server.
Het schalen, het bijsnijden en het wijzigen van het bestandstype gebeuren alle drie in je eigen browser, op je eigen hardware, met de beeldencoders die daar toch al in zitten. 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 plaatje 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 schaal een foto. Geen enkel verzoek draagt een afbeelding, een miniatuur, een bestandsnaam of ook maar één byte van wat je koos. Of trek de stekker uit je internet en schaal er alsnog een.
Hoe je de privacybelofte controleert
Je afbeeldingen kunnen 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. Het schalen is één drawImage op een canvas plus één canvas.toBlob, oftewel de schaler en de encoder die al in je browser zitten.
Een bestand waar niemand om wijziging vroeg, wordt niet gewijzigd. Snijd je niet bij, schaal je niet en wijzig je het bestandstype niet, dan krijg je het bestand dat je koos byte voor byte terug in plaats van opnieuw opgeslagen. Dat is niet alleen netjes, want juist daardoor kan deze tool niet stiekem een plaatje hercoderen, en evenmin stiekem de metagegevens weglaten van iets waar je alleen naar wilde kijken.
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 plaatjes mee. Elke regel die een bestand leest, bijsnijdt, schaalt of schrijft, 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/geometry.js voor het rekenwerk dat bepaalt wat er blijft en hoe groot het eruit komt, en src/codecs.js voor de ene drawImage-aanroep die het bijsnijden en het schalen tegelijk doet.
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 afbeeldingen
2 Snijd bij, als je dat wilt
Het kader begint op het hele plaatje, dus laat je deze stap met rust, dan wordt er niets bijgesneden. Elke afbeelding houdt zijn eigen kader, dus kies er een uit de lijst hierboven om erop te tekenen. Bijsnijden gebeurt vóór schalen, en dat is ook de enige volgorde die hout snijdt. Een plaatje dat pas na het krimpen wordt teruggesneden, heeft de pixels die het nodig had immers al weggegooid.
Sleep binnen het kader om het te verplaatsen, of aan een hoek om het formaat te wijzigen. Met het kader geselecteerd verschuiven de pijltjes het een pixel tegelijk, wijzigt Alt + pijltjes het formaat, en maakt Shift ingedrukt houden elke stap tien.
Voeg een afbeelding toe en het kader verschijnt hier.
3 Zeg hoe groot het moet worden
Maak een plaatje nooit groter dan het begon Vergroten verzint pixels die nooit gefotografeerd zijn, dus een klein plaatje in een groot kader komt er zacht uit in plaats van gedetailleerd. Met dit aan blijft alles wat al kleiner is dan het gevraagde formaat op zijn eigen formaat staan.
Vul er één in en laat de andere leeg om de eigen verhouding van het plaatje te houden.
Welke zijde de langste is wordt dit, en de andere volgt. Staande en liggende foto's in dezelfde stapel komen er allemaal even groot op hun lange zijde uit, en dat is wat een galerij meestal wil.
4 Sla het op
Kwaliteit — 85 Alleen JPEG en WebP; PNG heeft geen kwaliteitsknop. Bij 85 houdt het voor de meeste mensen op zichtbaar te zijn. Onder ongeveer 60 gaan de vlakke gebieden banden vertonen.
Achtergrond Wat er doorheen komt waar het plaatje niet is: achter een opgevuld kader, en achter transparantie wanneer het uitvoerformaat geen alfakanaal heeft.
Klaar
{name}: geen afbeelding die dit gereedschap kan lezen.{name}: deze browser kon hem niet decoderen.{name}: {reason}deze browser wilde geen {format} schrijven.deze browser kon het plaatje niet decoderen.{n} bytes{n} KB{n} MB1 afbeelding{n} afbeeldingenongeveer even groot{percent}% kleiner{percent}% groter{count}, {size} in totaal{name} is degene in het uitsnedevoorbeeldHet kader op {name} tekenenIn het voorbeeld{name} van de lijst halenEr wordt niets veranderd, dus deze gaat er precies zo doorheen als hij is.wordt {size}De afbeelding verkleinenDe afbeeldingen verkleinenVoorbeeld van {name}Uitsnedegebied. De pijltjestoetsen verplaatsen het, Alt en de pijltjestoetsen wijzigen het formaat, en met Shift ingedrukt is elke stap tien pixels.Getekend op {name}.Elke afbeelding houdt zijn eigen kader. {note}{name} heeft een eigen kader.{name} staat nog op het hele plaatje — kies hem in de lijst hierboven om die ook uit te snijden.De andere {count} staan nog op het hele plaatje — kies er een in de lijst hierboven om die uit te snijden.Allebei de andere hebben een eigen kader.Alle {n} andere hebben een eigen kader.1 van de andere {total} heeft een eigen kader; de rest staat nog op het hele plaatje.{n} van de andere {total} hebben een eigen kader; de rest staat nog op het hele plaatje.Alle afbeeldingen op de lijst zijn precies dit formaat, dus de andere krijgt precies dit kader.Alle afbeeldingen op de lijst zijn precies dit formaat, dus ze krijgen allemaal precies dit kader.Op elk hetzelfde relatieve gebied — dezelfde breuken van de eigen breedte en hoogte —, omdat ze niet allemaal even groot zijn.Het grootste kader in de vorm van het plaatje zelf dat in hetzelfde relatieve gebied van elk past, zodat elk resultaat de vorm krijgt die je hebt vastgezet ook al zijn ze niet allemaal even groot.Het grootste {ratio}-kader dat in hetzelfde relatieve gebied van elk past, zodat elk resultaat de vorm krijgt die je hebt vastgezet ook al zijn ze niet allemaal even groot.Een JPEG blijft een JPEG, een PNG blijft een PNG. Wat deze browser niet kan schrijven — een GIF, een BMP — komt eruit als PNG, dat transparantie en vlakke kleur behoudt.Klein en overal leesbaar, en zonder transparantie: alles wat doorschijnend is wordt met de achtergrondkleur gevuld.Verliesvrij en transparant, en op een foto veel groter dan de andere twee.Kleiner dan JPEG bij dezelfde kwaliteit, houdt transparantie, en elke huidige browser opent het.WebP — niet ondersteund door deze browseruitgesneden tot {crop}geschaald naar {size}gelaten op {size}uitgesneden tot {crop} en daarna geschaald naar {size}{what}, opgevuld tot precies het kader dat je vroeg{what}, geschreven als {format}{plan}.Voeg een afbeelding toe en hier staat precies wat er van wordt.Er wordt niets veranderd: {name} is {size} en komt precies zo terug als hij erin ging, byte voor byte.{name} is {size}. Eruit komt {out} — {scale}.{name} is {size}. Eruit komt {out} — het plaatje op {scale}, op een achtergrond die de rest van dat kader vult.{name} is {size}. Het kader houdt daar {crop} van over. Eruit komt {out} — {scale}.{name} is {size}. Het kader houdt daar {crop} van over. Eruit komt {out} — het plaatje op {scale}, op een achtergrond die de rest van dat kader vult.{percent}% van wat het kader overhoudt{percent}% van het origineelvergroot tot {percent}% van wat het kader overhoudtvergroot tot {percent}% van het origineelEr wordt niets uitgesneden, niets geschaald en het formaat blijft, dus er valt niets opnieuw te coderen: elk bestand komt byte voor byte terug, EXIF-tags en al, omdat er niet één van wordt opengemaakt.De afbeelding wordt {plan} — en de EXIF- en GPS-tags overleven dat niet, want een canvas bevat pixels en verder niets.{name} wordt {plan} — en de EXIF- en GPS-tags overleven dat niet, want een canvas bevat pixels en verder niets. {rest}De andere afbeelding krijgt dezelfde formaat- en bestandsinstellingen, met zijn eigen uitsnede.De andere {count} krijgen dezelfde formaat- en bestandsinstellingen, elk met zijn eigen uitsnede.{index} van {total}: {name}Er was niets gevraagd, dus er is niets gedaan: elk bestand kwam precies zo terug als het erin ging.{before} erin, {after} eruit — {change}.{before} erin, {after} eruit — {change}. {count} had geen wijziging nodig en is er zo doorheen gegaan.{before} erin, {after} eruit — {change}. {count} hadden geen wijziging nodig en zijn er zo doorheen gegaan.{name} op ware grootte bekijken{size} · {bytes} — ongewijzigd{before} → {after} · {beforebytes} → {afterbytes} · {change}Byte voor byte doorgegeven, metadata en al: aan dit bestand werd niets veranderd.BekijkenDownloadenHet origineel: {name}Het resultaat: {name}Het origineel {name}, op {size}. Ze worden allebei getoond op het formaat waar dit venster ruimte voor heeft, wat de enige eerlijke manier is om ze te vergelijken.Het resultaat tonenHet origineel tonenOpgeslagen alsFormaatVoorNaBestandsgrootteUitgesnedenSchaalOpvullingKwaliteitMetadatahetzelfde bestand, byte voor bytebehouden — dit bestand is nooit opengemaaktniet meegenomen — een canvas bevat pixels en verder niets{size}, vanaf {x} van links en {y} van bovennee — het hele plaatje ging erdoorheen{percent}% van de uitsnede{percent}% van het origineelja — het plaatje ligt op de achtergrondkleurGestopt na {done} van {total}. Wat af is, staat hieronder.Gestopt voordat de eerste af was.Je afbeeldingen 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 afbeelding 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 afbeelding 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.
# Afbeeldingsformaat wijzigen — schalen, bijsnijden, omzetten
Noem het formaat. Sleep het kader. Kies het bestandstype.
> Schaal, snijd bij en zet JPEG-, PNG- en WebP-afbeeldingen om in je browser. Exacte pixels, een percentage of een lange zijde - één afbeelding of een hele map. Er wordt niets geüpload.
Deze pagina is een interactief hulpmiddel dat volledig in je browser draait, op https://abox.tools/nl/afbeelding-formaat-wijzigen/ — 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 afbeeldingen worden **nooit geüpload**. Er is geen server.
Het schalen, het bijsnijden en het wijzigen van het bestandstype gebeuren alle drie in je eigen browser, op je eigen hardware, met de beeldencoders die daar toch al in zitten. 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 plaatje naartoe te sturen.
- ✗ Geen upload
- ✗ Geen account
- ✗ Geen watermerk
- ✓ Werkt offline
- ✓ Open source
## Zo schaal je een afbeelding zonder hem te uploaden
1. **Kies je afbeeldingen.** Sleep ze het vak in of kies ze met de hand. De browser leest ze rechtstreeks van je schijf, en er gaat ondertussen niets ergens heen.
2. **Snijd bij, als je dat wilt.** Het kader begint op het hele plaatje, dus laat je het met rust, dan wordt er niets bijgesneden. Sleep het, of zet het vast op een vorm: 1:1 voor een profielfoto, 9:16 voor een verhaal, 16:9 voor een miniatuur. Met “Grootst” krijg je het grootste kader dat erin past. Elke afbeelding houdt zijn eigen kader, dus klik op een regel in de lijst om op die afbeelding te tekenen. Moeten ze allemaal hetzelfde ingekaderd worden, dan doet één knop dat ook.
3. **Zeg welk formaat eruit moet komen.** Geef een breedte op, een hoogte of allebei. Geef je een lange zijde op, dan worden staande en liggende foto's even groot, en anders volstaat een percentage. Laat je een van de twee vakjes leeg, dan houdt het plaatje zijn eigen verhouding.
4. **Kies het bestandstype en druk op de knop.** Hou het bestandstype aan waarmee elk bestand binnenkwam, of schrijf alles als JPEG, PNG of WebP. Bij elk resultaat staat wat het geworden is en hoeveel kleiner het werd. Klik erop om het op volle grootte te openen, met alle cijfers erachter en het origineel ernaast om tegen af te zetten. Een stapel komt binnen als één zip.
## De uitgebreide versie
[Het formaat van een afbeelding wijzigen zonder hem te verpesten](https://abox.tools/nl/gidsen/formaat-van-een-afbeelding-wijzigen/): Wat er met een plaatje gebeurt als je zijn pixelafmetingen verandert: waarom krimpen veilig is en vergroten niet, wat je doet als het kader de verkeerde vorm heeft, en wanneer je beter bijsnijdt.
## Ook in de gereedschapskist
- [HEIC naar JPG](https://abox.tools/nl/heic-naar-jpg/): De foto's die een iPhone maakt, in een formaat dat overal opengaat.
- [Pasfotomaker](https://abox.tools/nl/pasfoto-maken/): Kies het land. Hij past die regel toe, precies.
- [Afbeeldingen stacken](https://abox.tools/nl/afbeeldingen-stacken/): Twintig frames tot één, zonder twintig uploads en zonder RAW-converter.
- [Afbeelding onleesbaar maken](https://abox.tools/nl/afbeelding-onleesbaar-maken/): Wat je afdekt wordt uit het bestand gewist, niet erin verstopt.
## Vragen
### Wordt mijn afbeelding ergens heen geüpload?
Nee. Je eigen browser decodeert, snijdt, schaalt en schrijft het bestand op je eigen hardware, met de JPEG-, PNG- en WebP-encoders die de browser al meelevert. 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.
### Wat gebeurt er als ik wel een breedte maar geen hoogte opgeef?
De hoogte volgt dan uit de eigen verhouding van het plaatje, en vrijwel altijd is dat ook wat er bedoeld werd. “1920 breed” betekent nu eenmaal “1920 breed en zo hoog als dat uitkomt”. Vul je ze allebei in, dan kunnen die twee de verhouding van het plaatje tegenspreken, en alleen dan verschijnt de keuze “als de verhoudingen niet kloppen”. Je kunt het dan binnen laten passen, laten vullen en de overloop afsnijden, opvullen met een achtergrond, of uitrekken en de vervorming accepteren.
### Kost schalen kwaliteit?
Een plaatje kleiner maken niet, op geen enkele zichtbare manier, want er gaan meer pixels in dan eruit komen en het detail dat blijft is dus echt detail. Er een groter maken kan niet toevoegen wat nooit gefotografeerd is. Je krijgt een zachtere kopie van hetzelfde plaatje terug en geen scherpere, en daarom staat “maak een plaatje nooit groter dan het begon” standaard aan. Wat wel een beetje kost is het hercoderen daarna, als het formaat JPEG of WebP is, en met de kwaliteitsschuif bepaal je hoeveel je daaraan uitgeeft.
### Kan ik elke afbeelding anders bijsnijden?
Ja, en dat is de standaard. Elke afbeelding op de lijst draagt zijn eigen kader, in zijn eigen pixels, en klik je op een regel, dan komt die afbeelding in de voorvertoning te staan met zijn eigen kader en zijn eigen vaste vorm er weer op. Wat je met de een doet raakt de ander niet. Elk kader begint bovendien op het hele plaatje, dus een afbeelding waarop je nooit tekent wordt helemaal niet bijgesneden.
### Kan hij een hele stapel in één keer hetzelfde bijsnijden?
Ja, met de knop onder de voorvertoning. Die geeft elke andere afbeelding hetzelfde relatieve gebied, oftewel dezelfde breuken van zijn eigen breedte en hoogte. Bij een set schermafbeeldingen of exports die allemaal even groot zijn komt dat op precies hetzelfde kader neer, en de pagina zegt dat er ook bij. Staat er een vaste vorm ingesteld, dan krijgt elke afbeelding het grootste kader van die vorm binnen dat gebied. Druk je dus eerst 1:1 in en dan die knop, dan haal je vierkanten uit een map met staande en liggende foto's door elkaar. Elk kader blijft daarna gewoon bewerkbaar.
### Welke formaten kan hij lezen en schrijven?
Hij leest alles wat je browser kan decoderen, in de praktijk dus JPEG, PNG, WebP, GIF, BMP en in de meeste browsers van nu ook AVIF. Schrijven doet hij in JPEG, PNG en WebP, want dat zijn de encoders die browsers meeleveren. Op “hou het formaat” blijft een JPEG een JPEG en een PNG een PNG. Alles wat de browser niet kan schrijven, zoals een GIF of een BMP, komt eruit als PNG, en dat is nu juist het formaat dat transparantie en vlakke kleur intact houdt.
### Wat gebeurt er met transparantie als ik als JPEG opsla?
Die wordt met de achtergrondkleur opgevuld, omdat JPEG geen alfakanaal heeft om hem in op te slaan. De kleur kies je zelf en hij begint op wit, wat de meeste mensen willen en wat vrijwel elke andere tool doet zonder het erbij te zeggen. Achter een opgevuld kader wordt dezelfde kleur gebruikt. Sla je in plaats daarvan op als PNG of WebP, dan komt de transparantie onaangeroerd door.
### Haalt hij de EXIF- en gps-gegevens eruit?
Bij alles wat hij werkelijk verwerkt wel, als bijwerking. Bijsnijden of schalen betekent namelijk dat het plaatje tot pixels wordt gedecodeerd en dat die pixels opnieuw worden gecodeerd, en een canvas vol pixels draagt geen tags. De locatie, het cameramodel en de tijdstempels belanden daardoor domweg niet in het nieuwe bestand. Bij een bestand dat je helemaal niet wijzigt ligt het anders, want dat krijg je byte voor byte terug, tags en al. Wil je de metagegevens kwijt maar het plaatje onaangeroerd houden, gebruik dan de [EXIF-lezer & -wisser](https://abox.tools/nl/exif-gegevens-verwijderen/), die de container herschrijft zonder ook maar iets opnieuw te comprimeren.
### Hoe verschilt dit van de afbeeldingscompressor?
Deze gaat over afmetingen. Je zegt hoeveel pixels je wilt en die krijg je. De [Afbeeldingscompressor](https://abox.tools/nl/afbeelding-comprimeren/) gaat over bestandsgrootte. Daar zeg je hoeveel kilobytes je mag hebben, waarna hij de hoogste kwaliteit zoekt die daarin past en alleen schaalt wanneer kwaliteit alleen er niet komt. Is je gezegd “1200 pixels breed”, dan zit je hier goed. Is je gezegd “onder 500 KB”, dan brengt de andere je verder.
### 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 afbeeldingen 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 afbeeldingen wegstuurde om ze te laten schalen zou ermee ophouden zodra je de stekker eruit trok.
## Hoe je de privacybelofte controleert
- **Je afbeeldingen kunnen 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`. Het schalen is één `drawImage` op een canvas plus één `canvas.toBlob`, oftewel de schaler en de encoder die al in je browser zitten.
- **Een bestand waar niemand om wijziging vroeg, wordt niet gewijzigd.** Snijd je niet bij, schaal je niet en wijzig je het bestandstype niet, dan krijg je het bestand dat je koos byte voor byte terug in plaats van opnieuw opgeslagen. Dat is niet alleen netjes, want juist daardoor kan deze tool niet stiekem een plaatje hercoderen, en evenmin stiekem de metagegevens weglaten van iets waar je alleen naar wilde kijken.
- **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 plaatjes mee. Elke regel die een bestand leest, bijsnijdt, schaalt of schrijft, 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/geometry.js` voor het rekenwerk dat bepaalt wat er blijft en hoe groot het eruit komt, en `src/codecs.js` voor de ene `drawImage`-aanroep die het bijsnijden en het schalen tegelijk doet.
Zo schaal je een afbeelding zonder hem te uploaden
Kies je afbeeldingen. Sleep ze het vak in of kies ze met de hand. De browser leest ze rechtstreeks van je schijf, en er gaat ondertussen niets ergens heen.
Snijd bij, als je dat wilt. Het kader begint op het hele plaatje, dus laat je het met rust, dan wordt er niets bijgesneden. Sleep het, of zet het vast op een vorm: 1:1 voor een profielfoto, 9:16 voor een verhaal, 16:9 voor een miniatuur. Met “Grootst” krijg je het grootste kader dat erin past. Elke afbeelding houdt zijn eigen kader, dus klik op een regel in de lijst om op die afbeelding te tekenen. Moeten ze allemaal hetzelfde ingekaderd worden, dan doet één knop dat ook.
Zeg welk formaat eruit moet komen. Geef een breedte op, een hoogte of allebei. Geef je een lange zijde op, dan worden staande en liggende foto's even groot, en anders volstaat een percentage. Laat je een van de twee vakjes leeg, dan houdt het plaatje zijn eigen verhouding.
Kies het bestandstype en druk op de knop. Hou het bestandstype aan waarmee elk bestand binnenkwam, of schrijf alles als JPEG, PNG of WebP. Bij elk resultaat staat wat het geworden is en hoeveel kleiner het werd. Klik erop om het op volle grootte te openen, met alle cijfers erachter en het origineel ernaast om tegen af te zetten. Een stapel komt binnen als één zip.
De uitgebreide versie
Het formaat van een afbeelding wijzigen zonder hem te verpestenWat er met een plaatje gebeurt als je zijn pixelafmetingen verandert: waarom krimpen veilig is en vergroten niet, wat je doet als het kader de verkeerde vorm heeft, en wanneer je beter bijsnijdt.
Nee. Je eigen browser decodeert, snijdt, schaalt en schrijft het bestand op je eigen hardware, met de JPEG-, PNG- en WebP-encoders die de browser al meelevert. 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.
Wat gebeurt er als ik wel een breedte maar geen hoogte opgeef?
De hoogte volgt dan uit de eigen verhouding van het plaatje, en vrijwel altijd is dat ook wat er bedoeld werd. “1920 breed” betekent nu eenmaal “1920 breed en zo hoog als dat uitkomt”. Vul je ze allebei in, dan kunnen die twee de verhouding van het plaatje tegenspreken, en alleen dan verschijnt de keuze “als de verhoudingen niet kloppen”. Je kunt het dan binnen laten passen, laten vullen en de overloop afsnijden, opvullen met een achtergrond, of uitrekken en de vervorming accepteren.
Kost schalen kwaliteit?
Een plaatje kleiner maken niet, op geen enkele zichtbare manier, want er gaan meer pixels in dan eruit komen en het detail dat blijft is dus echt detail. Er een groter maken kan niet toevoegen wat nooit gefotografeerd is. Je krijgt een zachtere kopie van hetzelfde plaatje terug en geen scherpere, en daarom staat “maak een plaatje nooit groter dan het begon” standaard aan. Wat wel een beetje kost is het hercoderen daarna, als het formaat JPEG of WebP is, en met de kwaliteitsschuif bepaal je hoeveel je daaraan uitgeeft.
Kan ik elke afbeelding anders bijsnijden?
Ja, en dat is de standaard. Elke afbeelding op de lijst draagt zijn eigen kader, in zijn eigen pixels, en klik je op een regel, dan komt die afbeelding in de voorvertoning te staan met zijn eigen kader en zijn eigen vaste vorm er weer op. Wat je met de een doet raakt de ander niet. Elk kader begint bovendien op het hele plaatje, dus een afbeelding waarop je nooit tekent wordt helemaal niet bijgesneden.
Kan hij een hele stapel in één keer hetzelfde bijsnijden?
Ja, met de knop onder de voorvertoning. Die geeft elke andere afbeelding hetzelfde relatieve gebied, oftewel dezelfde breuken van zijn eigen breedte en hoogte. Bij een set schermafbeeldingen of exports die allemaal even groot zijn komt dat op precies hetzelfde kader neer, en de pagina zegt dat er ook bij. Staat er een vaste vorm ingesteld, dan krijgt elke afbeelding het grootste kader van die vorm binnen dat gebied. Druk je dus eerst 1:1 in en dan die knop, dan haal je vierkanten uit een map met staande en liggende foto's door elkaar. Elk kader blijft daarna gewoon bewerkbaar.
Welke formaten kan hij lezen en schrijven?
Hij leest alles wat je browser kan decoderen, in de praktijk dus JPEG, PNG, WebP, GIF, BMP en in de meeste browsers van nu ook AVIF. Schrijven doet hij in JPEG, PNG en WebP, want dat zijn de encoders die browsers meeleveren. Op “hou het formaat” blijft een JPEG een JPEG en een PNG een PNG. Alles wat de browser niet kan schrijven, zoals een GIF of een BMP, komt eruit als PNG, en dat is nu juist het formaat dat transparantie en vlakke kleur intact houdt.
Wat gebeurt er met transparantie als ik als JPEG opsla?
Die wordt met de achtergrondkleur opgevuld, omdat JPEG geen alfakanaal heeft om hem in op te slaan. De kleur kies je zelf en hij begint op wit, wat de meeste mensen willen en wat vrijwel elke andere tool doet zonder het erbij te zeggen. Achter een opgevuld kader wordt dezelfde kleur gebruikt. Sla je in plaats daarvan op als PNG of WebP, dan komt de transparantie onaangeroerd door.
Haalt hij de EXIF- en gps-gegevens eruit?
Bij alles wat hij werkelijk verwerkt wel, als bijwerking. Bijsnijden of schalen betekent namelijk dat het plaatje tot pixels wordt gedecodeerd en dat die pixels opnieuw worden gecodeerd, en een canvas vol pixels draagt geen tags. De locatie, het cameramodel en de tijdstempels belanden daardoor domweg niet in het nieuwe bestand. Bij een bestand dat je helemaal niet wijzigt ligt het anders, want dat krijg je byte voor byte terug, tags en al. Wil je de metagegevens kwijt maar het plaatje onaangeroerd houden, gebruik dan de EXIF-lezer & -wisser, die de container herschrijft zonder ook maar iets opnieuw te comprimeren.
Hoe verschilt dit van de afbeeldingscompressor?
Deze gaat over afmetingen. Je zegt hoeveel pixels je wilt en die krijg je. De Afbeeldingscompressor gaat over bestandsgrootte. Daar zeg je hoeveel kilobytes je mag hebben, waarna hij de hoogste kwaliteit zoekt die daarin past en alleen schaalt wanneer kwaliteit alleen er niet komt. Is je gezegd “1200 pixels breed”, dan zit je hier goed. Is je gezegd “onder 500 KB”, dan brengt de andere je verder.
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 afbeeldingen 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 afbeeldingen wegstuurde om ze te laten schalen zou ermee ophouden zodra je de stekker eruit trok.