Responsive Image
Responsive Image slike pomanjša na strežniku in jih postreže v velikosti, ki jo stran zares potrebuje – z medpomnilnikom in po želji kot vdelan izhod Base64. Paket je namenjen avtorjem, ki sliko vstavijo v določeni velikosti, ne da bi jo prej obrezali, in upraviteljem, ki spremljajo čas nalaganja in medpomnilnik.
Prvi koraki
Hitri začetek: vstavljanje slike v želeni velikosti – najkrajša pot do prvega rezultata, v treh korakih.
Vstavite oznako → Izberite velikost in izhod → Preverite rezultat
Pogosta opravila
| Kaj želite | Za koga | Kje to naredite | Navodilo |
|---|---|---|---|
| vstaviti sliko v določeni velikosti | avtorji | oznaka {{wk:image>…}} | Sintaksa |
| poiskati parametre | avtorji | – | Parametri |
| sliko postreči vdelano namesto povezano | avtorji | izhod Base64 | Parametri |
| uporabiti sliko v izseku | avtorji | – | Integracija z wksnippet |
| razumeti, zakaj slika ostane nespremenjena | avtorji | – | Obravnava napak |
| nastaviti medpomnilnik in omejitve | upravitelji | Splošne nastavitve | Konfiguracija |
| oceniti vpliv na čas nalaganja | upravitelji | – | Zmogljivost |
Definicija
Vtičnik wkimage omogoča slike, kodirane v base64, kot Data-URI neposredno v atributu src oznak <img>.
DokuWiki nima vgrajenega mehanizma za slike, vdelane v base64. Privzeto se slike vedno vključijo kot sklic na naslov URL:
<!-- Standardni DokuWiki --> <img src="/lib/exe/fetch.php?media=wiki:logo.png" /> <!-- Z wkimage --> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA..." />
Vtičnik to reši z obdelavo na strežniku in premišljenim predpomnjenjem.
Osnovne funkcije:
- Vdelan izhod base64 – slike so vdelane neposredno v HTML
- Spreminjanje velikosti na strežniku – velikost se prilagodi samodejno
- Pretvorba oblik zapisa – PNG/JPEG/GIF v WebP
- Premišljeno predpomnjenje – obdelane slike se shranijo v predpomnilnik
- API pomočnika – programski dostop za predloge in vtičnike
- Podpora za vgrajeni CSS – parameter
styleza zahtevnejšo postavitev - Povezava z wksnippet – uporabno v izsekih HTML
Primeri uporabe
- Odzivni logotipi – izvorne slike visoke ločljivosti, ki se prilagodijo vsebniku
- Optimizirane sličice – samodejna pomanjšava brez ročno pripravljenih različic slik
- Pretvorba oblik zapisa – JPEG v WebP za manjše datoteke
- Dokumenti brez povezave – izvoz PDF z vdelanimi slikami
- Logotipi predlog – predloga Flat uporablja wkimage za izris logotipa
- Manj zahtev HTTP – slik ni treba prenašati posebej
- Prekrivanje slik – zahtevnejša postavitev s parametrom
style - Ponovno uporabni izseki – povezava z wksnippet za gradnike HTML
Sintaksa
{{wk:image>mediaId|parameter1=vrednost1|parameter2=vrednost2}}
Minimalni primer
{{wk:image>wiki:logo.png}}
Popolni primer
{{wk:image>wiki:logo.png|width=100%|maxwidth=600|quality=85|format=webp|cache=1w|alt=Logo podjetja|class=logo-responsive|style=border-radius:8px|lazy=1}}
Parametri
Obvezni parametri
| Parameter | Tip | Opis |
|---|---|---|
| mediaId | string | ID medija DokuWiki za izvorno sliko. Oblika: namespace:datoteka.ext |
Parametri velikosti
| Parameter | Tip | Privzeto | Opis |
|---|---|---|---|
width | string | auto | Širina. Vrednost v pikslih (600 ali 600px), manjša od širine izvorne slike, se dostavi, večja vrednost izvorne slike ne spremeni. %, em, rem in vw so zgolj CSS in dostavljenih pikslov ne spremenijo. Primer: width=100% |
height | string | auto | Višina. Vrednost v pikslih, manjša od višine izvorne slike, se dostavi, %, em, rem in vh so zgolj CSS. Primer: height=200px |
maxwidth | integer | 1200 | Maksimalna širina v pikslih za spreminjanje velikosti. Slika nikoli ne bo večja od te vrednosti. |
maxheight | integer | null | Maksimalna višina v pikslih za spreminjanje velikosti. Neobvezno, ohranja razmerje stranic. |
density | integer | 1 | Slikovne pike na piksel prikaza, od 1 do 3. Z density=2 ostane posnetek zaslona, zajet v dvojni ločljivosti, oster: prikaz sledi maxwidth, podatki so dvakrat širši. Slika je pri tem približno trikrat težja, zato je nastavitev namenjena slikam z besedilom, ne fotografijam. |
maxwidth × maxheight pikslov in ohrani razmerje stranic. Vrednost v pikslih v width ali height, manjša od izvorne velikosti, sliko prav tako pomanjša. Enote CSS (%, em, rem, vw, vh) vplivajo le na prikaz. Povečave ni nikoli. density preračuna podatke na večkratnik velikosti prikaza, največ do izvorne slike.
Parametri kakovosti
| Parameter | Tip | Privzeto | Veljavne vrednosti | Opis |
|---|---|---|---|---|
quality | integer | 85 | 10-100 | JPEG/WebP kakovost kompresije. Višje = boljša kakovost, vendar večja datoteka. |
format | string | auto | jpeg, png, gif, webp | Izhodna oblika zapisa. Pri auto se ohrani izvorna oblika zapisa. |
- webp - Najboljša kompresija, moderni brskalniki
- jpeg - Fotografije, barvni prehodi
- png - Prosojnost, ostri robovi, logotipi
- gif - Enostavne grafike, animacije (brez podpore za spreminjanje velikosti animacij)
Parametri predpomnilnika
| Parameter | Tip | Privzeto | Veljavne vrednosti | Opis |
|---|---|---|---|---|
cache | string | 1d | 1h, 6h, 1d, 1w, 1m | Trajanje predpomnilnika za obdelano sliko. |
| Okrajšava | Pomen |
|---|---|
h | Ure |
d | Dnevi |
w | Tedni |
m | Meseci (30 dni) |
HTML atributi
| Parameter | Tip | Privzeto | Opis |
|---|---|---|---|
alt | string | (prazno) | Nadomestno besedilo za dostopnost. Vedno naj bo nastavljeno! |
class | string | wkimage | Dodatni razredi CSS. Več razredov ločite s presledki. |
style | string | (prazno) | Novo v 1.2.0: vgrajeni CSS za posamično postavitev in oblikovanje. |
lazy | boolean | 1 | Odloženo nalaganje (lazy loading). 1 = vklopljeno, 0 = izklopljeno. |
inline | boolean | 1 | Vdelan izhod base64. 1 = Data-URI, 0 = zunanji URL (v prihodnosti). |
Primeri
Primer 1: Odziven logotip
Zahteva: Logotip naj se prilagaja širini vsebnika, vendar nikoli ne presega 300px.
{{wk:image>wiki:logo_hires.png|width=100%|maxwidth=300|alt=WvdS Logo}}
Rezultat:
- Izvorna slika (npr. 1200×480) je pomanjšana na 300×120
- CSS
width: 100%jo naredi odzivno max-width: 300pxpreprečuje povečanje preko 300px
Primer 2: WebP pretvorba za fotografije
Zahteva: Optimizirati JPEG fotografijo za hitrejše nalaganje.
{{wk:image>fotografije:ekipa.jpg|maxwidth=800|quality=80|format=webp|alt=Naša ekipa}}
Rezultat:
- Pretvori JPEG v WebP (pribl. 30% manjše)
- Pomanjša na največ 800px širine
- Kakovost 80% za dober kompromis
Primer 3: Galerija sličic
Zahteva: Enotne sličice za galerijo slik.
| {{wk:image>galerija:slika1.jpg|maxwidth=150|maxheight=150|alt=Slika 1}} | {{wk:image>galerija:slika2.jpg|maxwidth=150|maxheight=150|alt=Slika 2}} |
Primer 4: Hero pasica z dolgotrajnim predpomnilnikom
Zahteva: Velika pasica, ki se redko spreminja.
{{wk:image>oblikovanje:hero-banner.png|width=100%|maxwidth=1920|quality=90|cache=1m|alt=Dobrodošli}}
Primer 5: Prekrivanje slik s parametrom style
Zahteva: Postaviti dve sliki eno nad drugo (npr. prenosnik s tablico pred njim).
<div style="position: relative; display: inline-block;"> {{wk:image>sl:laptop.png|maxwidth=400|alt=Prenosnik|style=display:block}} {{wk:image>sl:tablet.png|maxwidth=180|alt=Tablica|style=position:absolute;right:-30px;bottom:10px;transform:rotate(-5deg);box-shadow:0 4px 15px rgba(0,0,0,0.3)}} </div>
Rezultat:
- Prenosnik kot osnovna slika (
display:block) - Tablica absolutno pozicionirana, rahlo zasukana s senco
- Obe sliki vgrajeni kot base64 (brez HTTP zahtev)
Kako deluje
Potek obdelave
1. Razčlenjevanje sintakse
└── Izlušči mediaId in parametre iz {{wk:image>...}}
2. Nalaganje izvorne slike
└── Prebere datoteko iz data/media/{namespace}/{datoteka}
└── Preveri obliko zapisa slike (PNG, JPEG, GIF, WebP)
3. Preverjanje predpomnilnika
└── Ustvari zgoščeno vrednost: MD5(pot + mtime + širina + višina + kakovost + format)
└── Preveri data/cache/wkimage/{hash}.{format}
└── Ob zadetku predpomnilnika: Naloži predpomnjeno sliko
4. Obdelava slike (ob zgrešitvi predpomnilnika)
└── imagecreatefrom{format}() - Naloži izvorno sliko
└── imagecreatetruecolor() - Ustvari ciljno sliko
└── imagecopyresampled() - Visokokakovostno skaliranje
└── image{format}() - Shrani v ciljni format
5. Shranjevanje v predpomnilnik
└── Zapiše obdelano sliko v data/cache/wkimage/
6. HTML izhod
└── Ustvari <img src="data:image/{mime};base64,{podatki}" .../>
Imenik predpomnilnika
Predpomnjene slike so shranjene v:
data/cache/wkimage/
Oblika imena datoteke: {MD5-hash}.{format}
Konfiguracija
Skrbniške nastavitve
Prek Skrbništvo → Splošne nastavitve → wkimage:
| Nastavitev | Tip | Privzeto | Opis |
|---|---|---|---|
defaultQuality | Število | 85 | Privzeta kakovost, če ni navedena |
defaultCache | Besedilo | 1d | Privzeto trajanje predpomnilnika |
defaultMaxWidth | Število | 1200 | Privzeta maksimalna širina |
enableWebp | Vklop/Izklop | Vklop | Vklopi podporo za WebP |
lazyLoad | Vklop/Izklop | Vklop | Odloženo nalaganje privzeto vklopljeno |
Obravnava napak
Sporočila o napakah
| Napaka | Vzrok | Rešitev |
|---|---|---|
Image not found: {mediaId} | Medijska datoteka ne obstaja | Preverite pot, naložite datoteko |
Invalid image: {mediaId} | Datoteka ni veljavna slika | Preverite obliko zapisa slike, ponovno naložite |
Image processing failed | Napaka GD knjižnice | Preverite PHP GD razširitev, povečajte pomnilnik |
Zahteve
- Razširitev PHP GD - mora biti vklopljena
- Podpora WebP - Potrebna za
format=webp(PHP 7.1+ z libwebp) - Pravice za pisanje - Za
data/cache/wkimage/
Zmogljivost
Priporočila
| Primer | Priporočene nastavitve |
| Logotipi, ikone | maxwidth=300, format=png, cache=1w |
| Fotografije | maxwidth=800, quality=80, format=webp, cache=1d |
| Hero pasice | maxwidth=1920, quality=85, cache=1m |
| Sličice | maxwidth=150, quality=75, cache=1w |
Poraba pomnilnika
- 1920×1080 PNG: ~8 MB RAM
- 4000×3000 JPEG: ~48 MB RAM
Pri težavah s pomnilnikom povečajte memory_limit v php.ini.
Varnost niti
Vtičnik je varen za niti. Vzporedne zahteve za isto sliko lahko začasno sprožijo podvojeno obdelavo, vendar se predpomnilnik zapisuje atomarno.
Integracija z wksnippet
Novo v različici 1.2.0: oznako wk:image je mogoče uporabiti neposredno v izsekih Snippet.
Delovanje
Vtičnik wksnippet oznake {{wk:image>...}} v datotekah izsekov samodejno obdela prek pomočnika wkimage.
Primer: izsek hero_images
Datoteka: <savedir>/wksnippet/hero_images.html
<div class="hero-devices" style="position: relative; display: inline-block; margin: 20px 0;"> {{wk:image>sl:laptop.png|maxwidth=400|alt=Prenosnik|style=display:block}} {{wk:image>sl:tablet.png|maxwidth=180|alt=Tablica|style=position:absolute;right:-30px;bottom:10px;transform:rotate(-5deg);box-shadow:0 4px 15px rgba(0,0,0,0.3)}} </div>
Uporaba na strani wikija:
{{wk:snippet>hero_images}}
Prednosti
| Vidik | Brez wkimage | Z wkimage |
| Optimizacija slike | Brez (izvirna velikost) | Prilagoditev na maxwidth, predpomnjenje |
| HTTP zahteve | 2 ločeni zahtevi | 0 (base64 vgrajeno) |
| Vzdrževanje | Poti HTML, zapisane v kodi | ID-ji medijev DokuWiki |
| Delovanje brez povezave | Ne | Da (vdelano) |
Opombe k različicam
| Različica | Datum | Spremembe |
|---|---|---|
| 1.2.0 | 2026-01-26 | Parameter style za vgrajeni CSS, povezava z wksnippet |
| 1.1.0 | 2026-01-08 | API pomočnika za programski dostop iz predlog in vtičnikov |
| 1.0.0 | 2026-01-06 | Prva izdaja |
Glejte tudi
- Snippet – ponovno uporabni izseki HTML (podpirajo oznake wk:image)
- WvdS.DokuWiki.Flat Template – predloga uporablja wkimage za izris logotipa
- Predogled ob deljenju – metaoznake Open Graph (uporabljajo slike)
- Dokumentacija PHP GD (v angleščini)
Tehnična referenca
Razred: syntax_plugin_wkimage
Datoteka: lib/plugins/wkimage/syntax.php
| Metoda | Opis |
|---|---|
getType() | Vrne substition |
getSort() | Vrne 319 (prioriteta) |
connectTo($mode) | Registrira vzorec \{\{wk:image>[^}]+\}\} |
handle($match, …) | Razčleni sintakso in izlušči parametre |
render($mode, …) | Ustvari HTML izhod |
Zasebne metode
| Metoda | Parametri | Vrne | Opis |
|---|---|---|---|
calculateDimensions() | $origW, $origH, $opts | array | Izračuna ciljno velikost |
processImage() | $file, $mime, $w, $h, $q, $fmt | string | Obdela sliko |
getCacheKey() | $file, $w, $h, $q, $fmt | string | Ustvari zgoščeno vrednost predpomnilnika |
buildHtml() | $data, $fmt, $opts, $w, $h | string | Ustvari HTML izhod |
Razred: helper_plugin_wkimage
Datoteka: lib/plugins/wkimage/helper.php
Pomočnik omogoča programski dostop do obdelave slik za predloge in vtičnike.
Uporaba
// Nalaganje pomočnika $wkimage = plugin_load('helper', 'wkimage'); // Upodabljanje slike iz wiki medijev $html = $wkimage->renderImage('wiki', 'wiki:logo.png', array( 'maxwidth' => 300, 'quality' => 90, 'alt' => 'Logo', 'class' => 'my-logo', )); // Upodabljanje slike iz imenika predloge $html = $wkimage->renderImage('template', 'logo.png', array( 'maxwidth' => 300, )); // Upodabljanje slike iz absolutne poti datoteke $html = $wkimage->renderImage('file', '/pot/do/slike.jpg', array( 'maxwidth' => 800, 'format' => 'webp', ));
Metoda: renderImage()
| Parameter | Tip | Opis |
|---|---|---|
$source | string | Vir: wiki, template, file |
$path | string | Pot glede na vir |
$options | array | Neobvezni parametri upodabljanja |
Parametri opcij
| Opcija | Tip | Privzeto | Opis |
|---|---|---|---|
maxwidth | int | 300 | Maksimalna širina v pikslih |
maxheight | int | null | Maksimalna višina v pikslih |
quality | int | 85 | Kakovost slike (10-100) |
format | string | auto | Izhodna oblika zapisa (jpeg, png, webp) |
class | string | '' | Razredi CSS (wkimage se doda samodejno) |
alt | string | '' | Nadomestno besedilo |
style | string | '' | Novo: vgrajeni CSS za postavitev in oblikovanje |
cache | string | '1w' | Trajanje predpomnilnika |
loading=„lazy“ in decoding=„async“.
Vrnjena vrednost
Vrne popolno <img> oznako z base64 Data-URI:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." width="300" height="120" alt="Logo" class="my-logo"/>
Ob napakah vrne HTML komentar:
<!-- wkimage: file not found: wiki:manjkajoča.png -->
Primer: Logotip predloge Flat
Predloga Flat uporablja pomočnik za izris logotipa:
// V lib/tpl/flat/lang_helper.php function tpl_renderLogo() { $wkimage = plugin_load('helper', 'wkimage'); if ($wkimage) { return $wkimage->renderImage('wiki', $logoPath, array( 'maxwidth' => $maxWidth, 'quality' => $quality, 'alt' => $siteTitle, 'class' => 'logo-img', )); } // Rezervni način brez wkimage return '<img src="..." />'; }
<wk:audit stack=„doku“ title=„wkimage Vtičnik“>
<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include> <wk:include ref="stacks:dokuwiki-php">[x][x][x][x][x]</wk:include> <wk:include ref="sicherheit:kritis" critical="true">[x][x][x][-][-]</wk:include>
</wk:audit>
DISCUSSION
Podatki o paketu
Vtičnik: wkimage
Različica: 1.2.0
Imenski prostor: lib/plugins/wkimage/
Avtor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Licenca: GPL 2