Color scheme: Light
You are here: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » Responsive Image

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

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>.

Zakaj ta vtičnik?

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 style za 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.
Logika spreminjanja velikosti: Vtičnik izvorno sliko pomanjša na največ 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.
Priporočila za oblike 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).
Parameter style: omogoča zahtevnejšo postavitev s CSS neposredno v oznaki. Primeren je za prekrivanje slik, absolutno postavitev in transformacije.

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: 300px prepreč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

Velike slike zahtevajo veliko pomnilnika med obdelavo:
  • 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


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
Samodejni atributi: pomočnik vedno doda 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

sl/wiki/dwe/wkimage/start.txt · Last modified: by Wolfgang van der Stille