Skip to content

Attelu optimizacija

Transformējiet un optimizējiet no IPFS piegādātos attēlus uzreiz, izmantojot vaicājuma parametrus. Šis ir publisks endpoint, kuram nav nepieciešama autentifikācija.

Optimera bild

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

Atgriež attēlu pie norādītā CID, transformētu saskaņā ar sniegtajiem vaicājuma parametriem. Ja nav sniegti transformācijas parametri, pieprasījums tiek 302-pāradresēts uz oriģinālo attēlu IPFS vārtejā.

Path parameters

ParameterTypeRequiredDescription
cidstringAttēla IPFS satura identifikators.

Query parameters

ParameterTypeDefaultDescription
wintegerIzvades platums pikseļos. Diapazons: 1–4096. Vērtības ≤ 0 vai neskaitliskas tiek ignorētas.
hintegerIzvades augstums pikseļos. Diapazons: 1–4096. Vērtības ≤ 0 vai neskaitliskas tiek ignorētas.
formatstringIzvades formāts: webp, jpeg, png vai avif. Reģistrjutīgs (lowercase). Nezināmas vērtības tiek ignorētas.
qualityinteger80Saspiešanas kvalitāte, 1–100. Attiecas tikai uz webp, jpeg un avif. png ir bezzudumu un to ignorē.
fitstringcoverKā attēlam jāiekļaujas izmēros: cover, contain, fill, inside vai outside.

Piezīme: parametrs ir quality, nevis q. Izplatītie saīsinājumi (q, width, height, fmt) netiek atpazīti.

Pieprasījums, kas nesniedz nevienu no w, h vai format, tiek uzskatīts par no-op un 302-pāradresēts uz oriģinālo attēlu. Tikai quality un fit neaktivizē transformāciju.

Fit modes

ModeBehavior
coverApgriezt, lai pārklātu abus izmērus (noklusējums).
containIekļaut abos izmēros, saglabājot malu attiecību. Var atstāt tukšu vietu (caurspīdīgu vai melnu atkarībā no formāta).
fillIzstiept, lai tieši aizpildītu abus izmērus. Var izkropļot attēlu.
insideTāpat kā contain, bet tikai samazina, nekad nepalielina.
outsideTāpat kā cover, bet tikai samazina, nekad nepalielina.

Palielināšana

Transformators nekad nepalielina attēlu pāri tā avota izmēriem. Ja pieprasāt w=2000 1200px-platam avotam, izvade būs 1200px plata. Tas attiecas uz visiem fit režīmiem.

Response

StatusWhenBody
200Šajā pieprasījumā tika izveidota transformācija.Bināri attēla baiti. Content-Type atbilst pieprasītajam formātam.
302Nav sniegti transformācijas parametri vai iepriekš transformētais rezultāts jau ir kešā.Location galvene norāda uz oriģinālo attēlu vai kešā saglabāto rezultātu https://ipfs.ninja/image-cache/....
400Trūkst cid ceļa parametra.{ "error": "cid required" }
404CID vārtejā nav atrasts.{ "error": "CID not found" }
500Negaidīta kļūda (bojāts attēls, transformācijas neveiksme utt.).{ "error": "<message>" }

Visas 200 un 302-keša atbildes tiek piegādātas ar Cache-Control: public, max-age=31536000, immutable. Skat. Caching zemāk.

Pieprasījumu piemēri

Mainīt izmēru uz 400px platumu, konvertēt uz WebP:

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

Mainīt izmēru un apgriezt uz 200×200 sīktēlu kā JPEG ar 60% kvalitāti:

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

Kvadrātveida sīktēls ar ietvariem apgriešanas vietā:

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

Tikai formāta konvertēšana, bez izmēra maiņas (noderīgi vecu JPEG AVIF/WebP versiju piegādei):

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

Maksimālā platuma ierobežošana, neuzliekot augstumu (saglabā malu attiecību):

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

Lietošana HTML

Atsauciet optimizētus attēlus tieši img tagos:

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

Piegādājiet dažādus izmērus ar srcset:

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"
/>

Modernā formātu sarunāšana ar <picture> (AVIF → WebP → JPEG rezerve):

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");
}

Lietošana ar Next.js

Kā pielāgots ielādētājs priekš next/image:

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

Atbildes tiek piegādātas ar Cache-Control: public, max-age=31536000, immutable. Tā kā IPFS saturs ir satura adresēts, tas pats CID ar tiem pašiem parametriem vienmēr rada to pašu izvadi, tāpēc pārlūki un CDN var keširot atbildes uz nenoteiktu laiku.

Keša transformācijas tiek glabātas S3, indeksētas pēc pilna parametru kopuma (cid, w, h, format, quality, fit). Turpmākie pieprasījumi ar tiem pašiem parametriem atgriež 302 pāradresāciju uz CloudFront priekšā esošo kešu (https://ipfs.ninja/image-cache/...), nevis atkārtoti palaiž transformāciju. Dažādas parametru kombinācijas rada dažādus keša ierakstus.

Tillganglighet

Attēlu optimizācija ir pieejama visos plānos, ieskaitot bezmaksas Dharma plānu.