Hoppa till huvudinnehåll
LibraTool logoLibraTool

Gratis Bilduppskalare

Förstora ett foto 4× med en AI-modell som körs på din egen enhet — skarpare kanter och läsbar text, inte bara större pixlar. Inget laddas upp, inget konto, ingen vattenstämpel.

Släpp filer här, eller klicka för att bläddra

PNG, JPG, WebP, AVIF, GIF, BMP, HEIC, HEIF · bearbetas på din enhet

eller tryck Ctrl+V för att klistra in från urklipp

Du kan släppa flera filer på en gång

Bläddra bland filer
Real-ESRGAN ritar om detaljer i 4× i stället för att sträcka ut pixlar. Modellen på 4,6 MB laddas ner en gång och körs sedan helt på den här enheten — ditt foto laddas aldrig upp.

Så här fungerar det

Uppskalaren kör Real-ESRGAN general-x4v3 — ett 4,6 MB stort faltningsnätverk för superupplösning — genom onnxruntime-web inuti en Web Worker på din egen dator. Modellen hämtas en gång från vår egen server, cachas, och används sedan offline; ditt foto avkodas till en canvas lokalt och laddas aldrig upp. Skalfaktorn är fast vid 4×, eftersom den är inbakad i grafen på två ställen.

  1. 1
    Bilden delas upp i överlappande brickor
    Ett 4×-resultat är sexton gånger fler pixlar, så ett foto på 4000×3000 skulle bli 192 megapixlar — nog för att döda webbläsarfliken helt istället för att bara sakta ner den. Istället delas bilden upp i kärnor som täcker den exakt, och varje kärna läses med en extra marginal av kontext på alla sidor så att faltningsstacken (vars receptiva fält är 34 pixlar) har riktiga grannpixlar att arbeta med. Kanter dupliceras, aldrig nollutfylls, vilket annars skulle få modellen att skärpa en svart kant runt bildrutan.
  2. 2
    Varje bricka packas som en planar RGB-tensor
    En bricka blir en float32-tensor med formen [1, 3, H, W] med de röda, gröna och blå kanalerna lagrade som separata plan och värden helt enkelt delade med 255 — ingen medelvärdes-/standardavvikelsenormalisering av något slag. Varje bricka fylls ut till exakt samma kvadratiska storlek, eftersom WebGPU-backenden kompilerar om sina shaders för varje ny indataform, och en plan med tre olika brickstorlekar skulle betala den kostnaden tre gånger.
  3. 3
    Inferens körs på WebGPU där det finns, annars på processorn
    Sessionen skapas med WebGPU först och faller tillbaka till enkeltrådad WebAssembly vid alla fel — grafikdrivrutiner utannonserar rutinmässigt stöd och misslyckas sedan mitt i byggandet av grafen, och långsammare är bättre än trasigt. Eftersom reservlösningen ändrar den realistiska storleksgränsen och körtiden med en stor faktor kontrollerar verktyget om jobbet på nytt mot vilken leverantör det faktiskt fick innan den första brickan körs, och talar om vilken det använde efteråt.
  4. 4
    Brickor korstonas ihop igen och begränsas
    Att foga ihop brickor kant mot kant lämnar ett synligt rutnät, så varje brickas bidrag viktas av en linjär ramp över den delade remsan. De två ramparna är exakta komplement, så vikterna summerar till exakt 1 vid varje utdatapixel och ingen ljus eller mörk linje visas längs en söm. Modellens råa utdata klipps inte inuti grafen — uppmätta värden sträcker sig från cirka −0,18 till +1,19 — så varje sampel begränsas till intervallet 0–255 innan 8-bitars omvandlingen, vilket är det som förhindrar brus längs högkontrastkanter. Alfa omsamplas separat och bilinjärt, eftersom nätverket självt inte har någon alfaväg.
  5. 5
    Resultatet kodas i workern
    De sammansatta pixlarna ritas till en OffscreenCanvas och kodas till PNG omedelbart, så att knappen Ladda ned inte har något asynkront glapp framför sig. Att växla till JPG kodar om från canvasen som workern fortfarande håller i stället för att köra modellen igen. En liten mittbeskärning renderas också i 100 % bredvid samma region omsamplad av webbläsaren, vilket är den enda jämförelsen där en 4×-skillnad faktiskt syns.

Modellens vikter hämtas en gång från vår egen server och cachas; din bild avkodas, delas upp i brickor, uppskalas och kodas helt inuti din webbläsare, och ingen del av den skickas någonsin någonstans.

Relaterade verktyg

Vanliga frågor