Skip to content

Kuvan optimointi

Muunna ja optimoi IPFS:stä toimitettavia kuvia lennossa kyselyparametrien avulla. Tämä on julkinen päätepiste, joka ei vaadi autentikointia.

Optimera bild

GET https://api.ipfs.ninja/image/:cid

Palauttaa annetun CID:n kuvan, joka on muunnettu annettujen kyselyparametrien mukaan. Jos muunnosparametreja ei anneta, pyyntö ohjataan 302-uudelleenohjauksella alkuperäiseen kuvaan IPFS-gatewayssa.

Path parameters

ParameterTypeRequiredDescription
cidstringKylläKuvan IPFS content identifier.

Query parameters

ParameterTypeDefaultDescription
wintegerTulosteen leveys pikseleinä. Alue: 1–4096. Arvot ≤ 0 tai ei-numeeriset jätetään huomiotta.
hintegerTulosteen korkeus pikseleinä. Alue: 1–4096. Arvot ≤ 0 tai ei-numeeriset jätetään huomiotta.
formatstringTulostemuoto: webp, jpeg, png tai avif. Kirjainkoko huomioidaan (pienet kirjaimet). Tuntemattomat arvot jätetään huomiotta.
qualityinteger80Pakkauslaatu, 1–100. Koskee vain muotoja webp, jpeg ja avif. png on häviötön ja jättää tämän huomiotta.
fitstringcoverMiten kuva sovitetaan mittoihin: cover, contain, fill, inside tai outside.

Huomio: parametrin nimi on quality, ei q. Yleisiä lyhenteitä (q, width, height, fmt) ei tunnisteta.

Pyyntö, joka ei sisällä yhtään parametreista w, h tai format, käsitellään no-op-toimintona ja ohjataan 302-uudelleenohjauksella alkuperäiseen kuvaan. quality ja fit yksinään eivät käynnistä muunnosta.

Fit modes

ModeBehavior
coverRajaa kattamaan molemmat mitat (oletus).
containSovita molempien mittojen sisään säilyttäen kuvasuhde. Voi jättää tyhjää tilaa (läpinäkyvä tai musta riippuen muodosta).
fillVenytä täyttämään molemmat mitat tarkasti. Voi vääristää kuvaa.
insideKuten contain, mutta skaalaa vain alaspäin, ei koskaan ylöspäin.
outsideKuten cover, mutta skaalaa vain alaspäin, ei koskaan ylöspäin.

Ylöspäin skaalaus

Muuntaja ei koskaan suurenna kuvaa sen lähdemittoja suuremmaksi. Jos pyydät w=2000 1200px leveälle lähdekuvalle, tuloste on 1200px leveä. Tämä koskee kaikkia fit-tiloja.

Response

StatusWhenBody
200Muunnos tuotettu tällä pyynnöllä.Binääriset kuvatavut. Content-Type vastaa pyydettyä muotoa.
302Muunnosparametreja ei annettu, tai aiemmin muunnettu tulos on jo välimuistissa.Location-otsikko osoittaa alkuperäiseen kuvaan tai välimuistissa olevaan tulokseen osoitteessa https://ipfs.ninja/image-cache/....
400cid-polkuparametri puuttuu.{ "error": "cid required" }
404CID:tä ei löytynyt gatewaysta.{ "error": "CID not found" }
500Odottamaton virhe (vioittunut kuva, muunnoksen epäonnistuminen jne.).{ "error": "<message>" }

Kaikki 200- ja 302-välimuistivastaukset toimitetaan otsikolla Cache-Control: public, max-age=31536000, immutable. Katso Cachning alta.

Example requests

Skaalaa 400px leveäksi, muunna WebP-muotoon:

bash
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=400&format=webp"

Skaalaa ja rajaa 200×200 pikkukuvaksi JPEG-muodossa 60 % laadulla:

bash
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=200&h=200&format=jpeg&quality=60&fit=cover"

Neliönmuotoinen pikkukuva letterboxing-tekniikalla rajauksen sijaan:

bash
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=200&h=200&format=png&fit=contain"

Muunna vain muoto, ei kokomuutosta (hyödyllinen vanhojen JPEG-kuvien AVIF/WebP-versioiden tarjoamiseen):

bash
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?format=avif&quality=70"

Rajoita enimmäisleveyttä pakottamatta korkeutta (säilyttää kuvasuhteen):

bash
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=1200&format=webp"

Using in HTML

Viittaa optimoituihin kuviin suoraan img-tageissa:

html
<img
  src="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=webp&quality=75"
  alt="Optimized IPFS image"
/>

Tarjoa eri kokoja srcset-attribuutilla:

html
<img
  srcset="
    https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=400&format=webp 400w,
    https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=webp 800w,
    https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=1200&format=webp 1200w
  "
  sizes="(max-width: 600px) 400px, (max-width: 1000px) 800px, 1200px"
  src="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=webp"
  alt="Responsive IPFS image"
/>

Moderni muotoneuvottelu <picture>-elementillä (AVIF → WebP → JPEG-varamuoto):

html
<picture>
  <source
    type="image/avif"
    srcset="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=avif&quality=60"
  />
  <source
    type="image/webp"
    srcset="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=webp&quality=75"
  />
  <img
    src="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=jpeg&quality=80"
    alt="IPFS image with format fallback"
  />
</picture>

CSS background-image:

css
.hero {
  background-image: url("https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=1600&format=webp&quality=70");
}

Käyttö Next.js:n kanssa

Mukautettuna lataajana next/image-komponentille:

js
// loaders/ipfs.js
export default function ipfsLoader({ src, width, quality }) {
  return `https://api.ipfs.ninja/image/${src}?w=${width}&format=webp&quality=${quality || 75}`;
}
jsx
import Image from "next/image";
import ipfsLoader from "@/loaders/ipfs";

<Image
  loader={ipfsLoader}
  src="QmXmCX9S6ANV..."
  alt="IPFS image"
  width={800}
  height={600}
/>;

Cachning

Vastaukset toimitetaan otsikolla Cache-Control: public, max-age=31536000, immutable. Koska IPFS-sisältö on sisältöosoitteinen, sama CID samoilla parametreilla tuottaa aina saman tulosteen, joten selaimet ja CDN:t voivat välimuistittaa vastauksia rajoituksetta.

Välimuistiin tallennetut muunnokset säilytetään S3:ssa indeksoituna koko parametrijoukolla (cid, w, h, format, quality, fit). Seuraavat pyynnöt samoilla parametreilla palauttavat 302-uudelleenohjauksen CloudFront-välimuistiin (https://ipfs.ninja/image-cache/...) sen sijaan, että muunnos suoritettaisiin uudelleen. Eri parametriyhdistelmät tuottavat eri välimuistimerkinnät.

Tillganglighet

Kuvan optimointi on saatavilla kaikissa tilauksissa, mukaan lukien ilmainen Dharma-tilaus.