Handleiding:Afbeeldingenbeheer
Hier beschrijven wij hoe de MediaWiki met bestanden omgaat en die opslaat, verder informatie over de configuratie.
Dit gaat dan niet alleen om afbeeldingen maar over alle bestanden die geüpload kunnen worden. Alle bestanden worden opgeslagen in een artikel door het gebruiken van de namespace "File:". Voor MediaWiki 1.14 is de namespace "Image:" hiervoor gebruikt. De namespace "Image:" wordt om compatibel te blijven met oudere versies nog als een alias bewaard.
Uploaden en gebruiken van afbeeldingen
Het uploaden inschakelen
Om te kunnen uploaden moet aan de volgende voorwaarden zijn voldaan:
- MediaWiki moet het uploaden hebben ingeschakeld. Zet $wgEnableUploads op
true
. - Het bestandstype moet toegestaan zijn. Meer informatie: $wgFileExtensions .
- De gebruiker moet in een gebruikersgroep zitten die het recht "upload" heeft. Standaard hebben alle ingelogde gebruikers dat recht.
Het uploaden gaat met Special:Upload.
Zie Handleiding:Bestandsuploads instellen , Manual:Mime type detection en Manual:Adding support for new filetypes
Parameters
De relevante parameters zijn:
Miniatuur van afbeelding
Met de MediaWiki image syntaxis is het mogelijk om dynamisch de grootte aan te passen en dus om een miniatuur (thumb) van een afbeelding te maken (algemene informatie over uploaden: Handleiding:Bestandsuploads instellen ).
Voor het maken van miniaturen is ImageMagick of GD library nodig, beide zijn geen onderdeel van de standaardinstallatie van MediaWiki.
GD
In PHP is GD grafische bibliotheek standaard ingeschakeld. GD kan zonder configuratie of aanpassing worden gebruikt.
Wij bevelen aan om op Windows hiervoor GD te gebruiken.
GD kan worden gedownload op https://libgd.github.io/. In recente PHP-versies is dit niet nodig.
ImageMagick
In MediaWiki kan het inschakelen van ImageMagick worden gedaan in LocalSettings.php
door het stellen van $wgUseImageMagick op true
.
ImageMagick kan worden gedownload op https://imagemagick.org/.
Na installatie van ImageMagick moet het worden ingeschakeld en aangeven worden in MediaWiki waar het staat met het convert
of convert.exe
programma op uw computer in LocalSettings.php , iets als:
$wgUseImageMagick = true;
#$wgImageMagickConvertCommand = 'C:/ImageMagick/convert.exe'; # for Windows
$wgImageMagickConvertCommand = '/usr/bin/convert'; # for Linux
Als u ImageMagick gebruikt, zet $wgUseImageMagick op true
in LocalSettings.php.
Zorg ervoor dat het commando uitvoerbaar is voor de webserver.
Als Windows gebruiker zou u de standaardwaarde willen wijzigen naar iets als "C:\ImageMagick\convert.exe".
Om oude (niet door ImageMagick aangemaakt) thumbnail bestanden opnieuw aan te maken kunt u $wgThumbnailEpoch gebruiken.
Als het bewerkingsproces zonder melding stuk loopt, controleer dan de $wgMaxShellMemory , die moet dan mogelijk hoger zijn.
GraphicsMagick is een alternatief voor ImageMagick. Stel $wgCustomConvertCommand dan in op
$wgUseImageMagick = false;
$wgCustomConvertCommand = "gm convert %s -resize %wx%h %d";
Formaat afbeelding
GIF
Voor het aanmaken van miniaturen van GIF-Animaties op Windows, is ImageMagick nodig. Het installeren is hierboven beschreven.
SVG
MediaWiki ondersteund 'SVG image rendering': indien ingeschakeld kunnen SVG afbeeldingen net als andere type worden gebruikt, zij worden automatisch getoond (render) als een PNG-bestand, er wordt er zo nodig vanzelf een miniatuur aangemaakt. Als u werkt op een gedeelde host waar geen 'SVG renderer' is geïnstalleerd, vraag dan aan uw provider dat voor u te installeren.
SVG ondersteuning inschakelen:
- Het uploaden van SVG-bestanden toestaan, in bestand LocalSettings.php:
$wgFileExtensions [] = 'svg';
MediaWiki zal vanwege de veiligheid SVG-bestanden die JavaScript bevatten weigeren.- om een verkeerde detectie te voorkomen, voeg aan het bestand LocalSettings.php toe
$wgAllowTitlesInSVG = true;
.- Als u MediaWiki 1.34 of hoger gebruikt, wordt
$wgAllowTitlesInSVG
nooit gebruikt maartrue
. U kunt dit veilig verwijderen in uw bestand LocalSettings.php.
- Als u MediaWiki 1.34 of hoger gebruikt, wordt
- Als u een foutmelding krijgt die aangeeft dat het bestand corrupt is, controleer dan of de mime-type detectie goed werkt.
- om een verkeerde detectie te voorkomen, voeg aan het bestand LocalSettings.php toe
- Voeg
$wgSVGConverter
toe aan LocalSettings.php en stel de te gebruiken 'renderer' in.- De mogelijke opties zijn ImageMagick, ImagickExt, sodipodi, inkscape, batik, rsvg en imgserv.
- Bijvoorbeeld:
$wgSVGConverter = 'ImageMagick';
- Als het converteerprogramma niet in het systeempad staat, dan moet u de map specificeren die het programma bevat dat
$wgSVGConverterPath
gebruikt.. - librsvg is snel maar wel minder accuraat. Het is afhankelijk van een groot aantal libraries. Om deze allemaal automatisch te willen installeren, wilt u mogelijk een package manager gebruiken. De Wikimedia projecten gebruiken rsvg.
- Batik is de meest accurate beschikbare SVG renderer, het anti-aliasing is soms wat minder optimaal. De SVG parsing is strikter,waardoor het soms een "bijna geldig" SVG-bestand weigert, dat een soortgelijk programma wel wordt verwerkt (bijv. commons:File:UbuntuCoF.svg). Batik vertrouwt op Java, het is veel langzamer dan rsvg, dat is niet zo van belang behalve als u steeds veel SVG-bestanden toevoegt. SVG benchmarks Als het niet in uw distributie zit, dan is het werkend krijgen een aardige omvangrijke klus.
- Inkscape werkt ook goed met SVG's, de halve snelheid van rsvg, maar het was ontworpen voor interactief grafisch gebruik; echter omdat het komt met inkview dat een bekijk/converteer programma is, is er een beschrijfbare eigen home map nodig voor de gebruiker waaronder het wordt uitgevoerd. Omdat het draait als gebruiker
www
(of zoiets), zal het proberen de mappen.inkscape/
en.gnome2/
in het bijhorende home map aan te maken, het sterft een stille dood, crasht of blijft hangen als dit aanmaken niet lukt. Inkscape heeft de voorkeur boven rsvg (a) op Windows (dan is het een standalone package) of (b) als u belangrijke SVG's tekent in Inkscape die niet goed worden verwerkt/weergegeven door rsvg. Inkscape heeft een meer compliceerde ketting van afhankelijkheden dan librsvg, gebruik het alleen als het in uw distributie zit of als het als compleet standalone package beschikbaar is. - Sodipodi is het programma waar Inkscape een fork van is. Hier gaan dezelfde overwegingen op, maar omdat Sodipod niet meer in actieve ontwikkeling is, is het eigenlijk geen alternatief voor Inkscape.
- Vanaf versie 6.x.x ImageMagick bouwt het SVG's op, maar dat gaat niet perfect. Dit is de standaard, probeer het te voorkomen. Het werkt wel. Op Windows moet $wgConvertPath worden gezet om een conflict te vermijden met het Windows programma convert.exe. In dit scenario is een eenvoudig alternatief het toevoegen aan LocalSettings.php van de regel
$wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -background white -thumbnail $widthx$height^! $input PNG:$output';
(hier zijn spaties in het pad toegestaan).- Om fouten bij het aanmaken van miniaturen te voorkomen bij gebruik van ImageMagick, moet bij een versie 7.0.9-25 of hoger, de Inkscape versie minstens 1.x.x zijn. Als de ImageMagick versie voor 7.0.9-25 ligt, dan moet de versie van Inkscape lager zijn dan < 1.x.x. ImageMagick probleem.
- De PHP extensie Imagick ondersteunt SVG rendering, maar met dezelfde opmerkingen als bij de reguliere ImageMagick.
- De GD bibliotheek kan geen SVG-afbeeldingen converteren naar het PNG-formaat. Hierbij gaan we uit van een blog van Joen Asmussen NoScope uit juni 2008.
- De meeste huidige webbrowsers mer uitzondering van Internet Explorer (voor versie 9) kunnen SVG's direct weergeven. Het gebruik van librsvg om de PNG te maken geeft betere resultaten, het verbruikt ook minder bandbreedte. Het direct weergeven van SVG wordt niet standaard door MediaWiki (taak T5593) ondersteund, daarvoor dient u de extensie NativeSvgHandler te installeren. Or, in MediaWiki 1.41 or newer, set
$wgSVGNativeRendering = true
.
Stel $wgSVGConverter = false
in als SVG opbouw niet nodig is, u wilt dan dat een gebruiker het svg-bestand zelf downloadt als die het zo wil bekijken.
Probleemoplossing
Als u een leeg vierkant ziet in plaats van de SVG (Chrome) of geen afbeelding (Firefox) en alle PNG-links geven de 404 fout en er zijn elders geen andere foutmeldingen, controleer dan de variabele $wgGenerateThumbnailOnParse
.
Als het op false
staat, dan wordt de SVG transformatie altijd uitgesteld.
Controleer of de proc_open en symlink PHP methoden ingeschakeld zijn (mogelijk zijn ze vanwege de beveiliging of performance in php.ini uitgeschakeld).
JPEG (via GD)
Voeg de volgende regel toe aan LocalSettings.php, dit zal zorgen voor het automatisch terugvallen op de GD bibliotheek.
$wgUseImageMagick = false;
Voor fouten met JPEG miniaturen: JPEG (met gebruik van GD).
TIFF
Voor het aanmaken van miniaturen van TIFF-bestanden heeft u MediaWiki 1.15.0 of hoger nodig.
- Het uploaden van TIFF-bestanden toestaan in het bestand LocalSettings.php:
$wgFileExtensions [] = 'tif';
- Voeg
$wgTiffThumbnailType
toe aan LocalSettings.php en kies het type (jpg of png) miniatuur dat aangemaakt moet worden. - Het aanmaken van miniaturen van TIFF-bestanden vereist meer systeembronnen dan bij bestandstypes als JPEG, GIF en PNG. Overweeg passende instellingen voor
$wgMaxImageArea
en$wgMaxShellMemory
DjVu
Afbeeldingen verwijderen
Bestanden als wiki-pagina's, kunnen alleen worden verwijderd door gebruikers met het "Pagina's verwijderen (delete)" recht (beheerders standaard). Het verwijderen van bestanden wordt gedaan door het verwijderen van de bijbehorende beschrijvingspagina (of door te klikken op de "alle versies verwijderen" link in de "Bestandsgeschiedenis" tabel).
Individuele revisies verwijderen
Na een wijziging van een bestand is er een een revisie geschiedenis van de bestanden die getoond wordt op de bestandspagina van het artikel. Elke revisie heeft een "verwijderen" link. Door daar op te klikken worden de revisie en het bestand verwijderd.
Informatie over oude revisies van bestanden wordt opgeslagen in de tabel oldimage , terwijl informatie over oude revisies van de pagina's worden opgeslagen in de tabel revision .
Bestanden herstellen na verwijdering
Bestanden kunnen op dezelfde manier als normale wiki-pagina's na verwijdering weer teruggezet worden. De map waarin verwijderde bestanden worden gezet wordt gedefinieerd met Manual:$wgDeletedDirectory . Informatie over verwijderde afbeeldingen staat in de tabel filearchive .
Gearchiveerde bestanden verwijderen
Vanaf MediaWiki versie 1.11 worden verwijderde afbeeldingen standaard nog bewaard op de server. Indien u gearchiveerde afbeeldingen wilt selecteren om ze te verwijderen, dan kan dat met het onderhoudsscript eraseArchivedFile.php . U kunt de verwijderde afbeeldingen ook allemaal zonder selectie verwijderen met het script deleteArchivedFiles.php . Als u gearchiveerde bestanden gaat verwijderen dan kunt u natuurlijk het verwijderen van die bestanden niet meer ongedaan maken.
Redenen om een bestand te verwijderen
Als u een bestand wilt verwijderen, zoals hierboven beschreven, dan kunt u daarvoor een reden opgegeven. De mogelijke redenen kunnen worden aangevuld of gewijzigd worden : beheer redenen bestand verwijderen.
Data Opslag
Bij het uploaden van een bestand worden er verschillende dingen gedaan:
- Een artikel in de namespace file met de bestandsnaam van het bestand, bijv. File:MyPicture.png. Deze pagina wordt opgeslagen en kan als elke pagina worden bewerkt.
- Het bestand zelf wordt opgeslagen in de map op de server, waarbij elke spatie in de naam worden vervangen door een
_
. - Indien noodzakelijk en het maken van een miniatuur is mogelijk, worden er een miniatuur (of meerdere in verschillende groottes) aangemaakt. Deze miniatuur wordt dan op bijvoorbeeld de beschrijvingspagina van het bestand gebruikt. De miniaturen worden opgeslagen in een map thumb in de map image, een map thumb voor elke originele afbeelding.
Als $wgHashedUploadDirectory ingeschakeld is (standaard), dan maakt MediaWiki meerdere submappen aan in de map images.
De mapnamen zijn de eerste twee tekens van de md5 hash van de uiteindelijke bestandsnaam.
Mappen
Alle afbeeldingsbestanden worden in de map die wordt aangegeven met $wgUploadPath opgeslagen (standaardwaarde: images/
).
Beschrijving van de genoemde submappen van images:
- archive
- Hier komen de bestanden te staan die vervangen zijn door een nieuwere versie.
- temp
- Gebruikt voor de tijdelijk opslag van bestanden tijdens het uploaden. Het kan gebeuren dat deze bestanden door het uploadproces niet worden verwijderd. (zie: taak T11018)
- thumb
- De automatisch aangemaakte miniaturen van de afbeeldingen. Als een miniatuur wordt verwijderd, dan worden ze automatisch weer aangemaakt op het moment dat de miniatuur gebruikt zou worden.
Afhankelijk van de configuratie kunnen er submappen van image zijn:
- math
- Map met de aangemaakte TeX invoer. Zie extensie Math of Handleiding Math.
- x/xy
- Als
$wgHashedUploadDirectory
de waardetrue
heeft (dat is de standaardwaarde), afbeeldingen worden opgeslagen in submappen van de afbeeldingen, een bestandspad kan danimages/a/ab/filename.jpg
zijn. Voor details of dit gewenst is en hoe dit systeem werkt: Manual:$wgHashedUploadDirectory .
Database-tabellen
- De pagina met de bestandsbeschrijving wordt opgeslagen in als elke pagina in de tabellen page, text, revision enz.
- image - Bevat wat metadata zoals de bestandsgrootte en de uploaddatum.
- oldimage - Hier komt informatie over bestanden te staan die vervangen zijn door een nieuwere versie.
- filearchive - Bevat informatie over de verwijderde bestanden.
- imagelinks - Legt vast welke pagina's een bestand gebruiken.
Ruimte gebruik
Bestanden nemen veel meer ruimte in dan artikelen. In de volgende berekeningen gaan we uit van block-size van 4KB op een Linux/Unix server.
De standaardinstelling is: $wgHashedUploadDirectory = true
.
Benodigde ruimte voor alle mappen:
- mappen met afbeeldingen: 0-f/x0-f: max. 16*16 = 256 mappen = 256*4 KB = 1024 KB
- archief mappen: 0-f/x0-f: max. 16*16 = 256 mappen = 256*4 KB = 1024 KB
- miniatuur mappen: 0-f/x0-f: max. 16*16 = 256 mappen = 256*4 KB = 1024 KB
- temp mappen: 0-f/x0-f: max. 16*16 = 256 mappen = 256*4 KB = 1024 KB
De geschatte benodigde ruimte, exclusief het bestand zelf, is 4 MB (aannemende dat alle mappen dus ook echt aangemaakt worden omdat ze nodig zijn).
Per bestand is nodig:
- grootte van het originele afbeeldingsbestand + gemiddeld 2 KB overhead
Voor bestanden waarvan een miniatuur wordt gemaakt:
- grootte miniatuur (miniaturen) + gemiddeld 2 KB overhead (per stuk)
- map voor de miniaturen (4KB) (elke afbeelding heeft er een hiervan)
Voorbeelden:
- afbeelding 20778 Byte png (klein, geen miniatuur): 24 KB voor de afbeelding: Totaal 24 KB
- afbeelding 123.000 Byte jpeg (groot, miniatuur): 124 KB voor de afbeelding, 4 KB voor de map, 64KB voor de miniatuur: Totaal: 192 KB
Bestandstoegang
Geüploade bestanden worden meestal door direct verwerkt door de webserver, niet via MediaWiki. Er kan wat beveiliging zijn vanwege de pad encryptie (bijv. /c/c4/...) als $wgHashedUploadDirectory gezet is, dan kan het pad worden bepaald uit de bestandsnaam en biedt dat geen echte beveiliging.
Voor het beperken van de toegang tot geautoriseerde gebruikers: Manual:Image authorization .
Upload formulier
Documentatie over het configureren van het uploadformulier.
Licenties
Een functie van MediaWiki maakt het mogelijk om met Special:Upload Page licenties van afbeeldingen te stroomlijnen. Die uploadpagina heeft een dropdownveld, onder de samenvattingstekst van de afbeelding, waar de licentie kan worden geselecteerd. Om deze functie te kunnen laten gebruiken moet een beheerder de licenties in de namespace MediaWiki bewerken (voorbeeld: MediaWiki:Licenses). Dit kan door naar de pagina MediaWiki:Licenses op hun wiki te gaan en die dan te bewerken (of aan te maken).
De pagina verwacht een bepaald formaat in een wiki-lijst.
*subst:license 1|license 2|License text
* Header 1:
** cc-by-sa-2.5|Attribution ShareAlike 2.5
Regel 1 zorgt voor "License text" en substitueert het sjabloon van 'license 1' in de afbeeldingspagina en transclude 'license 2'.
Regel 2 toont een grijze kopregel met de tekst "Header 1:"
Regel 3 geeft "Attribution ShareAlike 2.5" en transclude sjabloon cc-by-sa-2.5 op de afbeeldingspagina.
Voor een complex praktijkvoorbeeld: Wikipedia:MediaWiki:Licenses of Commons:MediaWiki:Licenses.
Externe repositories
Het is mogelijk om bestanden te benaderen die op externe repositories staan, zonder ze te uploaden naar de wiki, door het instellen van het array $wgForeignFileRepos . De mogelijkheden van deze functie:
- ForeignAPIRepo benadert bestanden op een remote MediaWiki installatie, zoals Wikimedia Commons, via diens API
- ForeignDBRepo benadert de bestanden ai een database, dat is bruikbaar bij de aanmaak van wiki families
- FSRepo benadert bestanden in een lokale map
In alle gevallen kan men de op een pagina ingevoegde bestanden gebruiken met een eenvoudige image syntaxis en de naam van het bestand in de externe repository specificeren. NB: Enkele van de implementaties hierboven zijn nog in de experimentele fase, dus minder geschikt voor productie websites.