Skip to content

Pildi optimeerimine

Muutke ja optimeerige IPFS-ist serveeritavaid pilte lennult, kasutades päringu parameetreid. See on avalik endpoint, mis ei nõua autentimist.

Optimera bild

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

Tagastab pildi antud CID-l, mis on teisendatud vastavalt esitatud päringuparameetritele. Kui ühtegi teisendusparameetrit ei esitata, suunatakse päring 302-ümbersuunamisega IPFS-i lüüsi originaalpildile.

Path parameters

ParameterTypeRequiredDescription
cidstringJahPildi IPFS-i sisutuvastaja.

Query parameters

ParameterTypeDefaultDescription
wintegerVäljundi laius pikslites. Vahemik: 1–4096. Väärtusi ≤ 0 või mittenumbrilisi ignoreeritakse.
hintegerVäljundi kõrgus pikslites. Vahemik: 1–4096. Väärtusi ≤ 0 või mittenumbrilisi ignoreeritakse.
formatstringVäljundi vorming: webp, jpeg, png või avif. Tõstutundlik (lowercase). Tundmatuid väärtusi ignoreeritakse.
qualityinteger80Tihendamise kvaliteet, 1–100. Kehtib ainult webp, jpeg ja avif korral. png on kadudeta ja ignoreerib seda.
fitstringcoverKuidas pilt peaks mahtuma mõõtmetesse: cover, contain, fill, inside või outside.

Märkus: parameeter on quality, mitte q. Levinud lühivariante (q, width, height, fmt) ei tunnustata.

Päringut, mis ei esita ühtegi w, h ega format parameetrit, käsitletakse no-op-ina ja see 302-ümbersuunatakse originaalpildile. quality ja fit üksi teisendust ei käivita.

Fit modes

ModeBehavior
coverLõika nii, et katab mõlemad mõõtmed (vaikimisi).
containMahuta mõlemasse mõõtmesse, säilitades kuvasuhte. Võib jätta tühja ruumi (läbipaistev või must olenevalt vormingust).
fillVeniva nii, et täidab mõlemad mõõtmed täpselt. Võib pilti moonutada.
insideNagu contain, kuid ainult vähendab, mitte kunagi ei suurenda.
outsideNagu cover, kuid ainult vähendab, mitte kunagi ei suurenda.

Suurendamine

Teisendaja ei suurenda kunagi pilti üle selle algallika mõõtmete. Kui taotlete w=2000 1200px-laiusele lähtepildile, on väljundi laius 1200px. See kehtib kõikide fit režiimide kohta.

Response

StatusWhenBody
200Selle päringuga loodi teisendus.Binaarsed pildi baidid. Content-Type vastab taotletud vormingule.
302Teisendusparameetreid ei esitatud või varem teisendatud tulemus on juba vahemällu salvestatud.Location päis osutab originaalpildile või vahemällu salvestatud tulemusele aadressil https://ipfs.ninja/image-cache/....
400cid tee parameeter puudub.{ "error": "cid required" }
404CID-d ei leitud lüüsist.{ "error": "CID not found" }
500Ootamatu viga (rikutud pilt, teisenduse ebaõnnestumine jne).{ "error": "<message>" }

Kõik 200 ja 302-vahemälu vastused serveeritakse Cache-Control: public, max-age=31536000, immutable päisega. Vt Caching allpool.

Näidispäringud

Muuda mõõdud 400px laiuseks, teisenda WebP-ks:

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

Muuda mõõdud ja lõika 200×200 pisipildiks JPEG-na 60% kvaliteediga:

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

Ruudukujuline pisipilt kärpimise asemel raamiga:

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

Ainult vormingu teisendus, ilma suuruse muutmiseta (kasulik vanade JPEG-ide AVIF/WebP versioonide serveerimiseks):

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

Maksimaalse laiuse piiramine ilma kõrgust sundimata (säilitab kuvasuhte):

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

Kasutamine HTML-is

Viidake optimeeritud piltidele otse img siltides:

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

Serveeri erinevaid suurusi srcset-iga:

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

Kaasaegne vormingu läbirääkimine <picture>-iga (AVIF → WebP → JPEG varuvariant):

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

Kasutamine Next.js-iga

Kohandatud laadijana next/image jaoks:

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

Vastuseid serveeritakse Cache-Control: public, max-age=31536000, immutable päisega. Kuna IPFS-i sisu on sisuaadressitud, annab sama CID samade parameetritega alati sama väljundi, seega saavad brauserid ja CDN-id vastuseid määramata ajaks vahemällu salvestada.

Vahemällu salvestatud teisendused salvestatakse S3-s täieliku parameetrite komplekti (cid, w, h, format, quality, fit) järgi võtmeks. Sama parameetritega järgnevad päringud tagastavad 302 ümbersuunamise CloudFronti taga olevale vahemälule (https://ipfs.ninja/image-cache/...), selle asemel et teisendust uuesti käivitada. Erinevad parameetrite kombinatsioonid loovad erinevaid vahemälukirjeid.

Tillganglighet

Pildi optimeerimine on saadaval kõikides plaanides, sealhulgas tasuta Dharma plaanis.