Lietuvių
Lietuvių
Appearance
Lietuvių
Lietuvių
Appearance
Transformuokite ir optimizuokite iš IPFS pateikiamus vaizdus skrydyje, naudodami užklausos parametrus. Tai yra viešas endpoint, kuriam nereikia autentifikavimo.
GET https://api.ipfs.ninja/image/:cid
Grąžina vaizdą nurodytame CID, transformuotą pagal pateiktus užklausos parametrus. Jei jokių transformavimo parametrų nepateikiama, užklausa 302-nukreipiama į originalų vaizdą IPFS šliuze.
| Parameter | Type | Required | Description |
|---|---|---|---|
cid | string | Taip | Vaizdo IPFS turinio identifikatorius. |
| Parameter | Type | Default | Description |
|---|---|---|---|
w | integer | — | Išvesties plotis pikseliais. Diapazonas: 1–4096. Reikšmės ≤ 0 arba neskaitinės yra ignoruojamos. |
h | integer | — | Išvesties aukštis pikseliais. Diapazonas: 1–4096. Reikšmės ≤ 0 arba neskaitinės yra ignoruojamos. |
format | string | — | Išvesties formatas: webp, jpeg, png arba avif. Atsižvelgiama į raidžių dydį (lowercase). Nežinomos reikšmės ignoruojamos. |
quality | integer | 80 | Suspaudimo kokybė, 1–100. Taikoma tik webp, jpeg ir avif. png yra be nuostolių ir tai ignoruoja. |
fit | string | cover | Kaip vaizdas turi tilpti į matmenis: cover, contain, fill, inside arba outside. |
Pastaba: parametras yra
quality, neq. Įprasti trumpiniai (q,width,height,fmt) nėra atpažįstami.
Užklausa, kurioje nepateikiama nė vieno iš w, h ar format, traktuojama kaip no-op ir 302-nukreipiama į originalų vaizdą. Vien quality ir fit neaktyvuoja transformavimo.
| Mode | Behavior |
|---|---|
cover | Apkirpti, kad apimtų abu matmenis (numatytasis). |
contain | Tilpti į abu matmenis, išlaikant kraštinių santykį. Gali likti tuščios vietos (skaidri arba juoda priklausomai nuo formato). |
fill | Tempti, kad tiksliai užpildytų abu matmenis. Gali iškreipti vaizdą. |
inside | Kaip contain, bet tik mažina, niekada nedidina. |
outside | Kaip cover, bet tik mažina, niekada nedidina. |
Transformatorius niekada nedidina vaizdo daugiau nei jo šaltinio matmenys. Jei užklausiate w=2000 1200px-pločio šaltiniui, išvestis bus 1200px pločio. Tai taikoma visiems fit režimams.
| Status | When | Body |
|---|---|---|
200 | Šioje užklausoje sukurta transformacija. | Dvejetainiai vaizdo baitai. Content-Type atitinka prašomą formatą. |
302 | Nepateikta transformavimo parametrų arba anksčiau transformuotas rezultatas jau yra talpykloje. | Location antraštė nurodo į originalų vaizdą arba talpykloje saugomą rezultatą https://ipfs.ninja/image-cache/.... |
400 | Trūksta cid kelio parametro. | { "error": "cid required" } |
404 | CID nerastas šliuze. | { "error": "CID not found" } |
500 | Netikėta klaida (sugadintas vaizdas, transformavimo nesėkmė ir pan.). | { "error": "<message>" } |
Visi 200 ir 302-talpyklos atsakymai pateikiami su Cache-Control: public, max-age=31536000, immutable. Žr. Caching žemiau.
Pakeisti dydį į 400px plotį, konvertuoti į WebP:
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=400&format=webp"Pakeisti dydį ir apkirpti į 200×200 miniatiūrą kaip JPEG su 60% kokybe:
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=200&h=200&format=jpeg&quality=60&fit=cover"Kvadratinė miniatiūra su rėmeliais vietoj apkirpimo:
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=200&h=200&format=png&fit=contain"Tik formato konvertavimas, be dydžio keitimo (naudinga senų JPEG AVIF/WebP versijoms pateikti):
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?format=avif&quality=70"Apriboti maksimalų plotį be priverstinio aukščio (išlaiko kraštinių santykį):
curl "https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=1200&format=webp"Naudoti optimizuotus vaizdus tiesiogiai img žymose:
<img
src="https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=800&format=webp&quality=75"
alt="Optimized IPFS image"
/>Pateikti skirtingus dydžius su srcset:
<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"
/>Modernus formato derinimas su <picture> (AVIF → WebP → JPEG atsarginis):
<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:
.hero {
background-image: url("https://api.ipfs.ninja/image/QmXmCX9S6ANV...?w=1600&format=webp&quality=70");
}Kaip pasirinktinis krautuvas next/image:
// loaders/ipfs.js
export default function ipfsLoader({ src, width, quality }) {
return `https://api.ipfs.ninja/image/${src}?w=${width}&format=webp&quality=${quality || 75}`;
}import Image from "next/image";
import ipfsLoader from "@/loaders/ipfs";
<Image
loader={ipfsLoader}
src="QmXmCX9S6ANV..."
alt="IPFS image"
width={800}
height={600}
/>;Atsakymai pateikiami su Cache-Control: public, max-age=31536000, immutable. Kadangi IPFS turinys yra adresuojamas pagal turinį, tas pats CID su tais pačiais parametrais visada pateikia tą pačią išvestį, todėl naršyklės ir CDN gali atsakymus talpinti neribotam laikui.
Talpyklos transformacijos saugomos S3, naudojant pilną parametrų rinkinį (cid, w, h, format, quality, fit) kaip raktą. Vėlesnės užklausos su tais pačiais parametrais grąžina 302 nukreipimą į CloudFront pridengtą talpyklą (https://ipfs.ninja/image-cache/...), užuot iš naujo paleidus transformaciją. Skirtingi parametrų deriniai sukuria skirtingus talpyklos įrašus.
Vaizdo optimizavimas prieinamas visuose planuose, įskaitant nemokamą Dharma planą.