Command Palette

Search for a command to run...

De naad is waar een gespleten foto misgaat

De naad is waar een gespleten foto misgaat

T
Toolz Team
|Oct 21, 2026|17 min lezen
Geef de voorkeur aan Toolz.dev op Google

Onderdeel van de Afbeeldingstools-collectie

Image Splitter

Cut an image into a grid of equal tiles in your browser, then download them as a ZIP

Gebruik de Image Splitter

Een 1001 pixel brede afbeelding die in drieën wordt gesneden, geeft geen drie tegels van 333. Het geeft 333, 334 en 333, en welke tegel krijgt de extra pixel bepaalt of de afbeelding weer bij elkaar komt. De voor de hand liggende manier om dit te schrijven, de breedte te delen door de telling en die maat voor elke tegel te gebruiken, laat 2.333 pixels van een 1001 bij 667-afbeelding vallen zonder iets te melden. De tegels zien er op zichzelf prima uit. De schade verschijnt alleen als ze weer naast elkaar staan, als een dunne lijn van het verkeerde ding in de naad, wat op een negendelige Instagram-raster de enige plek is die elke bezoeker kijkt.

tl;dr: Het splitsen van een afbeelding is één rekenkundige beslissing die herhaald wordt: waar valt elke snede wanneer de afbeelding niet gelijkmatig deelt. Door elke grens uit een enkele afgeronde reeks te berekenen, wordt de rechterrand van Tile N+1 N+1 door constructie van constructie, zodat de stukken precies weer in elkaar worden gezet. Geverifieerd door hashing: een afbeelding van 1001x667 opgesplitst in negen tegels en teruggeplakte raw-pixels met dezelfde MD5 als het origineel, 6fc1f790a418dc1ed3ee3d11747f1c20. De naïeve benadering laat 2.333 pixels van hetzelfde beeld vallen. de beeldsplitter Draait in de browser en handen terug een zip.

Wat betekent het splitsen van een afbeelding hier?

Een foto knippen in een set kleinere die het precies betegelen, zonder overlap en niets meer over.

Twee manieren om te zeggen wat je wilt. rastermodus Neemt een aantal rijen en kolommen, dus een 3 bij 3 geeft negen tegels, ongeacht de afbeeldingsgrootte. Groottemodus Neemt een tegelbreedte en -hoogte in pixels, en het raster is er echter veel van, waarbij de rechterkolom en de onderste rij alles zijn wat er overblijft.

De banen erachter zijn specifiek. Een negen-delig Instagram-raster van één foto. Een grote kaart of poster die is opgebroken in afdrukbare vellen. Een sprite-vel terug in frames. Een panorama verdeeld voor een carrouselpost. In elk van hen zullen de stukken weer naast elkaar eindigen, en daarom zijn de naden belangrijker dan wat dan ook van de operatie.

Waarom deelt een raster niet gelijkmatig?

Omdat beelddimensies zijn wat de camera heeft geproduceerd, en er gaan er zelden drie in.

Pixels zijn gehele getallen, dus een snede valt op een pixelgrens of deze bestaat niet. Een afbeelding waarvan de breedte niet een veelvoud van het aantal kolommen is, heeft een rest die ergens heen moet, en de enige vraag is waar.

Gemeten op de volgorde die de splitter produceert:

Afbeeldingsbreedte aansnijden tegelbreedtes hoeveelheid
1000 3 333, 334, 333 1000
1080 3 360, 360, 360 1080
1001 7 143x7 1001
4032 5 806, 807, 806, 807, 806 4032

De rest wordt verspreid in plaats van gedumpt. Een 1000 pixelafbeelding in drie delen geeft 333, 334, 333, niet 333, 333, 334, omdat elke grens wordt berekend als round(total * i / count) uit dezelfde reeks. Het verschil is onzichtbaar op één afbeelding en is van belang op een raster, waarbij een extra pixel op de laatste tegel de laatste kolom zichtbaar breder maakt dan de rest.

Let op de derde rij. 1001 gedeeld door 7 is precies 143, en veel afmetingen delen netjes. De rekenkunde laat zich pas zien als ze dat niet doen.

Hoe weet je dat er niets verloren gaat uit zijn voegen?

Door een afbeelding te splitsen en weer in elkaar te zetten, en vervolgens de pixels te vergelijken in plaats van ernaar te kijken.

Ik heb een 1001 bij 667-afbeelding gegenereerd van deterministische ruis, zodat elke pixel verschilt van zijn buren en elke dubbele of gedaalde kolom voor een hash duidelijk zou zijn. Vervolgens splitste ik het in een 3 bij 3 met behulp van het eigen plan van het gereedschap, haalde elke tegel uit en plakte ze allemaal terug op de coördinaten waaruit het kwam:

source        1001x667   raw md5 6fc1f790a418dc1ed3ee3d11747f1c20
reassembled   9 tiles    raw md5 6fc1f790a418dc1ed3ee3d11747f1c20

identiek. Niet vergelijkbaar, niet visueel niet te onderscheiden: dezelfde bytes. Er ging geen pixel verloren en geen enkele werd gedupliceerd.

De tegels die het hebben geproduceerd, zijn niet allemaal even groot, en dat is het punt:

334x222  333x222  334x222
334x223  333x223  334x223
334x222  333x222  334x222

Negen tegels, drie verschillende breedtes en twee verschillende hoogtes ertussen, die 667.667 pixels beslaan, wat precies 1001 keer 667 is.

Nu de naïeve versie van dezelfde baan. bemachtigen floor(1001 / 3) en floor(667 / 3), gebruik 333 bij 222 voor elke tegel en je dekt 999 bij 666. Een strook van twee pixels breed en een pixel hoog maakt het nooit tot een tegel. Dat is 2.333 pixels geruisloos weggegooid, en op een foto is het de rechterrand van de afbeelding.

Gridmodus of vaste tegelgrootte?

raster wanneer het aantal stukken ertoe doet. Grootte wanneer de afmetingen van elk stuk ertoe doen.

je wilt manier waarom
Negen berichten voor een voerrooster rooster, 3x3 De telling is de eis
Een poster over A4-bladen Maat De bladgrootte is de vereiste
Een sprite-vel dat in frames is gesneden Maat De framegrootte is vast en bekend
een panorama in een carrousel raster, 1 rij De telling is de carrousellengte

De twee modi zijn het niet eens over de restjes, en dat is het echte verschil tussen hen. De rastermodus verdeelt de rest, dus elke tegel bevindt zich binnen één pixel van elke andere. De modus voor de grootte geeft u precies de maat waar u om vroeg en plaatst de hele rest in de laatste rij en kolom.

Wat gebeurt er met de laatste rij en kolom in de modus Size?

Ze komen er kleiner uit, en dat is opzettelijk.

Het splitsen van een afbeelding van 1000 bij 800 in 300 bij 300 tegels geeft een raster van 4 bij 3. Twaalf tegels, waarvan zes niet 300 bij 300:

r0c3  100x300    r1c3  100x300    r2c3  100x200
r2c0  300x200    r2c1  300x200    r2c2  300x200

Die beslaan 800.000 pixels, precies de bron. Het alternatief zou zijn om het beeld bij te snijden tot een heel aantal tegels, wat betekent dat je aan de rechterkant stilletjes een strook van 100 pixels weggooit en een strook van 200 pixels langs de onderkant. Een tool die dat doet, is voor jou beslissen dat de rand van je foto er niet toe doet.

Als u gelijke tegels wilt, gebruik dan de rastermodus. Als je tegels van een bepaalde maat wilt en de afbeelding er niet door deelt, zijn de ondermaatse randstukken het eerlijke antwoord.

Waarom worden de bestanden R01-C01 genoemd?

Zodat een bestandsbeheerder op naam sorteert op naam geeft u de leesvolgorde, wat het anders niet zal doen.

Sorteren is alfabetisch, dus tile-10 Soorten tussen tile-1 en tile-2. Een raster van twaalf stuks dat op die manier wordt vermeld, monteert opnieuw in de verkeerde volgorde, en iedereen die vanuit de bestandsnamen werkt, zet rij tien waar rij twee thuishoort.

De getallen zijn opgevuld tot de breedte van de grootste index, dus de opvulling verschijnt alleen als het nodig is:

3 x 3 grid    shot-r3-c3.png
12 x 12 grid  My-Holiday-Photo-r01-c01.png ... My-Holiday-Photo-r12-c12.png

De oorspronkelijke naam wordt bewaard, met spaties en alles wat geen woordteken is dat in koppeltekens is veranderd, dus een bestand dat van een telefoon kwam, vertelt je nog steeds wat het was.

PNG of JPG voor de tegels?

PNG tenzij de tegels foto's zijn en de totale grootte een probleem is.

Splitsen is op zichzelf verliesloos: de pixels in een tegel zijn de pixels uit de bron. Opslaan als PNG houdt het zo, omdat Great is een verliesloos formaat. Opslaan als JPG hercodeert elke tegel opnieuw, wat op een foto die al een JPEG was een tweede generatie verlies betekent.

Er is een specifieke reden voor splitsen om de voorkeur te geven aan PNG, naast de gebruikelijke. JPEG comprimeert in 8 bij 8 blokken en de artefacten zijn het sterkst aan de randen van die blokken. Elke tegelgrens is een nieuwe rand in een nieuw bestand, gecodeerd zonder kennis van zijn buurman, dus JPEG-tegels kunnen een vage onderbreking vertonen, precies langs de naden die je onzichtbaar probeerde te maken. PNG heeft zo'n gedrag niet.

JPG bij kwaliteit 0.92 is wat de tool schrijft wanneer je hem kiest, wat een redelijke instelling is en nog steeds een tweede generatie. Voor negen tegels van een foto die op weg is naar een sociale feed die ze toch opnieuw zal comprimeren, is het een verdedigbare handel. voor alles dat wordt afgedrukt of opnieuw in elkaar wordt gezet, PNG.

Hoeveel tegels kun je maken?

Four Hundred, wat een 20 bij 20 raster is, en de limiet gaat in plaats van de browser in plaats van de rekenkundige.

Elke tegel wordt zijn eigen canvas en zijn eigen gecodeerde klodder voordat er iets wordt geritst, dus vierhonderd tegels betekent vierhonderd doeken en vierhonderd codes in één tabblad. Daarvoor begint de codering de pagina te vertragen in plaats van langzaam te eindigen.

21 x 21 ->  That is 441 tiles. The limit is 400, which is a 20 by 20 grid.

Een tweede controle grijpt het andere uiteinde. Je kunt een afbeelding niet in meer delen knippen dan pixels langs die as, dus het vragen om 80 rijen van een afbeelding van 50 pixels hoog wordt geweigerd met de werkelijke grootte van de afbeelding, in plaats van 30 tegels van nul hoogte te produceren.

Staat een negendelige raster op Instagram in een rij?

De stukken zullen goed zijn. Of de illusie werkt, is een aparte vraag met twee delen.

Eerst de vorm. Een voerrooster is vierkante cellen, dus een vierkante bron splitst 3 bij 3 vierkante tegels en alles komt overeen. Een 4:3 foto Split 3 bij 3 geeft tegels die 4:3 zijn, en de feed zal elk afzonderlijk tot een vierkant bijsnijden, wat de afbeelding breekt. Snijd of vul de bron naar een vierkant voor het splitsen, niet na.

Ten tweede, de bestelling. Een feed vult de nieuwste eerst, van linksboven, naar rechts bewegend. Dus de tegel die je in de linkerbovenhoek wilt hebben, moet de laatste zijn die is gepost. De boekingsvolgorde is het omgekeerde van de leesvolgorde: begin met de tegel rechtsonder en eindig met de linkerbovenhoek. Als u ze in de volgorde plaatst, worden de bestanden genummerd, wordt de afbeelding ondersteboven en van achter naar voren.

De naden zullen ook niet onzichtbaar zijn, omdat het raster een kleine opening tussen miniaturen tekent. Het effect is een afbeelding die wordt gezien door een raamkozijn in plaats van een continue afbeelding, en dat is hoe elke rasterpost eruitziet en wat mensen verwachten.

Hoe groot moeten de tegels zijn voor het afdrukken op vellen?

Werk achteruit vanaf het papier en de resolutie van de printer en verwacht dat de som groter is dan de afbeelding die u heeft.

A4 is 210 bij 297 millimeter. Met 300 dots per inch, wat het gebruikelijke doelwit is voor iets dat nauwkeurig wordt bekeken, is dat 2.480 bij 3.508 pixels per vel. Een poster over een 3 bij 3 van A4 wil daarom een bron van 7.440 bij 10.524 pixels, wat 78 megapixels is. Een foto van een recente telefoon is ongeveer 12.

Dus de eerlijke versie van deze taak is meestal een lagere resolutie dan 300 dpi, of minder vellen, of accepteren dat de afdruk zacht zal zijn. Bij 150 dpi heeft dezelfde 3 bij 3 3.720 bij 5.262 nodig, wat binnen het bereik van een goede camera ligt. Splitsen kan geen details toevoegen; het bepaalt alleen waar de bezuinigingen vallen.

Eén ding om te regelen voordat u afdrukt in plaats van daarna. Consumentenprinters kunnen niet afdrukken tot aan de rand van het vel, dus elke tegel komt met een witte rand en negen aan elkaar geplakte vellen tonen negen witte randen door de afbeelding. Het gebruikelijke antwoord is om randloos af te drukken als de printer dit ondersteunt, of om elk vel langs één rand te trimmen en ze overlappend te maken. Dit gereedschap snijdt precies, zonder afloop en zonder overlap, dus de overlap moet uit de bron komen: een iets groter raster splitsen en accepteer een strook te verliezen, of voeg de afloop zelf toe voordat je gaat splitsen.

Verliest splitsing kwaliteit?

Het snijden niet. De besparingskracht, en het formaat dat niemand noemt, doet dat zeker.

Elke tegel wordt uit de bronafbeelding getekend in een canvas van precies de grootte van de tegel, één bronpixel naar één bestemmingspixel, zonder dat er sprake is van schaling. Dat is een kopie. De hashtest hierboven is het bewijs ervan.

Waar kwaliteit gaat, is de encoder, die hierboven is behandeld, en één ding buiten deze tool volledig: overal waar je de tegels uploadt, worden ze waarschijnlijk verkleind. Een tegel van 360 bij 360 die op een feed staat die 1080 bij 1080 wil, wordt opgeschaald door het platform en het opschalen van pixels uitvindt. Als de tegels ergens voor bestemd zijn met een bekende maat, splits dan een bron die groot genoeg is om elke tegel op zijn minst die grootte te splitsen.

Waarom komt de download als een zip?

Omdat negen bestanden, of vierhonderd, niet iets zijn dat een browser zonder slag of stoot één voor één kan overhandigen.

Een pagina die meerdere downloads achter elkaar activeert, wordt na de eerste door de meeste browsers geblokkeerd, wat een verstandige bescherming is tegen een pagina die twintig dingen in uw downloadmap wil plaatsen. Een bouwen ritssluiting Op de pagina en het aanbieden van één bestand is de manier om het te omzeilen, en het houdt ook de tegels samen met hun namen intact, wat het onderdeel is dat belangrijk is voor hermontage.

Het archief is in het geheugen ingebouwd, wat een andere reden is voor het vierhonderd tegelplafond: het tabblad bevat de bronafbeelding, elk canvas van tegels, elke gecodeerde blob en het voltooide archief tegelijkertijd.

Wat splitsen niet doet

Het snijdt een rechthoek in een raster van rechthoeken. Er zit niets anders in.

Geen overlapping tussen tegels, die sommige mapping-workflows willen. Geen afdruk of snijtekens voor afdrukken. Geen niet-rechthoekige stukken. Geen automatisch bijsnijden naar een vierkant voor de splitsing. geen hermontage, wat de tegenovergestelde taak is en behoort tot de beeldfusie, bedekt met zijn gids.

Als je een puzzel, een mozaïek of tegels met overlap wilt, is dit niet dat gereedschap, en de kloof is het waard om te weten voordat je begint in plaats van nadat negen bestanden in je downloadmap zijn beland.

Waarom wordt dit uitgevoerd in de browser?

Omdat een rechthoek uit een foto wordt geknipt een canvas doet het native, en een server voegt niets anders toe dan een kopie van uw afbeelding op de schijf van iemand anders.

De afbeelding wordt gedecodeerd in het tabblad, elke tegel wordt in zijn eigen canvas getrokken, elk canvas wordt gecodeerd met toBlob, en de collectie wordt geritst en teruggegeven. Er wordt niets geüpload en niets wordt opgeslagen.

De afbeeldingen die mensen splitsen zijn niet altijd een vakantiefoto voor een feed. Het zijn plattegronden, gescande documenten, medische afbeeldingen, screenshots van interne systemen, illustraties voordat het wordt gepubliceerd. Voor hen stuurt het gebruikelijke alternatief het hele plaatje naar een dienst in ruil voor een operatie die uw eigen machine in een fractie van een seconde uitvoert.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!