Manuel:Gestion des images
Cet article décrit comment MediaWiki traite et stocke les fichiers, et fournit les informations de configuration.
Il s'applique aux images aussi bien qu'à tous les autres types de fichiers qui peuvent être téléversés. Tous les fichiers sont stockés avec un article qui leur correspond dans l'espace de noms "Fichier:". Dans les versions antérieures à MediaWiki 1.14, l'espace de noms "Image:" était utilisé à la place. "Image:" est toujours conservé en tant qu'alias dans un but de rétrocompatibilité.
Téléversement et utilisation des images
Voir Aide:Images
Activation du téléversement des images
Pour téléverser des images, ces conditions doivent être réunies:
- MediaWiki doit avoir le téléversement activé. Définissez $wgEnableUploads à
true
. - Le type de fichier doit être autorisé. Pour plus d'informations : voir $wgFileExtensions .
- L'utilisateur doit appartenir à un groupe qui détient les droits de téléversement. Par défaut, ils sont alloués à tous les utilisateurs logués.
Les téléversements se font en utilisant Special:Upload.
Voir Configuration du téléversement de fichiers , Manual:Mime type detection et Manual:Adding support for new filetypes
Paramètres pertinents pour la manipulation des fichiers
Ces paramètres sont pertinents:
Affichage de miniatures pour les images
La syntaxe des images de MediaWiki autorise les images à être automatiquement redimmensionnées et générées sous forme de miniatures (voir Configuration du téléversement de fichiers pour de l'aide générale concernant le téléversement des fichiers).
La génération des miniatures nécessite ImageMagick ou la bibliothèque GD - aucun des deux n'est inclus par défaut dans l'installation de MediaWiki.
GD
PHP est fourni avec avec la bibliothèque graphique GD activée par défaut. GD ne nécessite aucune configuration ni modification pour fonctionner.
Il est recommandé d'utiliser GD pour les systèmes Windows.
GD peut être téléchargé de https://libgd.github.io/. Pour les version plus récentes, cela n'est pas nécessaire.
ImageMagick
Dans MediaWiki, activez ImageMagick dans LocalSettings.php
en initialisant $wgUseImageMagick à true
.
ImageMagick peut être téléchargé de https://imagemagick.org/.
Une fois ImageMagick installé, activez-le et faites pointer MediaWiki sur les programmes convert
ou convert.exe
de votre ordinateur dans LocalSettings.php ainsi :
$wgUseImageMagick = true;
#$wgImageMagickConvertCommand = 'C:/ImageMagick/convert.exe'; # for Windows
$wgImageMagickConvertCommand = '/usr/bin/convert'; # for Linux
Si vous utilisez ImageMagick, initialisez $wgUseImageMagick à true
dans LocalSettings.php.
Assurez-vous que la commande soit executable par le processus du serveur web.
Par exemple, les utilisateurs de Windows devront remplacer la valeur par défaut par "C:\ImageMagick\convert.exe" (ou similaire).
Pour recréer les anciens fichiers de miniatures qui existaient avant que vous utilisiez ImageMagick, vous pouvez utiliser $wgThumbnailEpoch .
Si le rendu des images ne s'actualise pas, vérifiez la variable $wgMaxShellMemory et augmentez sa valeur.
GraphicsMagick peut aussi être utilisé comme alternative à ImageMagick. Vous devrez initialiser $wgCustomConvertCommand à ce qui suit. Ex. :
$wgUseImageMagick = false;
$wgCustomConvertCommand = "gm convert %s -resize %wx%h %d";
Formats des images
GIF
Pour mettre en miniature les animations GIF sous Windows, vous devrez installer ImageMagick comme décrit plus haut.
SVG
MediaWiki supporte l'affichage des images SVG: lorsqu'elle sont activées, les images SVG peuvent être utilisées comme les autres fichiers image - elles seront automatiquement affichées comme des fichiers PNG et miniaturisées si besoin. Si vous utilisez un hébergement mutualisé et qu'aucun module d'affichage SVG n'est préinstallé, vous devrez probablement demander à votre hébergeur de l'installer pour vous.
Pour activer le support SVG :
- Autoriser le téléversement de fichiers SVG dans le fichier LocalSettings.php :
$wgFileExtensions [] = 'svg';
Notez que MediaWiki refusera les fichiers SVG qui contiennent du JavaScript, pour des raisons de sécurité.- Pour éviter un faux positif, ajoutez la valeur
$wgAllowTitlesInSVG = true;
au fichier LocalSettings.php .- Si vous utilisez MediaWiki 1.34 ou plus récent,
$wgAllowTitlesInSVG
n'est jamais appliqué et toujours considéré àtrue
. Vous pouvez supprimer cette variable directement de votre fichier LocalSettings.php.
- Si vous utilisez MediaWiki 1.34 ou plus récent,
- Si une erreur concernant le fait que le fichier est corrompu est renvoyée, vérifiez que l'identification du format de données MIME fonctionne correctement.
- Pour éviter un faux positif, ajoutez la valeur
- Ajoutez la valeur
$wgSVGConverter
à LocalSettings.php et paramétrez le module d'affichage que vous souhaitez utiliser.- Les options disponibles sont ImageMagick, ImagickExt, sodipodi, inkscape, batik, rsvg, et imgserv.
- Par exemple :
$wgSVGConverter = 'ImageMagick';
- Si le programme de conversion n'est pas dans le chemin d'accès système, vous devez spécifier le "répertoire" qui contient le programme qui utilise
$wgSVGConverterPath
.. - librsvg est rapide mais pas très précis. Il dépend d'un grand nombre de bibliothèques. Pour installer toutes ces bibliothèques, vous pouvez utiliser un gestionnaire de paquets. Les projets Wikimedia utilisent rsvg.
- Batik est le module d'affichage SVG disponible le plus précis, bien que son anti-aliasing soit quelquefois sous-optimal. Son analyseur syntaxique SVG est plus strict, ce qui est à l'origine du refus des fichiers SVG "presque valides" que les autres modules d'affichage acceptent (ex : commons:File:UbuntuCoF.svg). Batik dépend de Java, et il est beaucoup plus lent que rsvg, mais ça ne devrait pas être un gros problème à moins que vous n'ajoutiez en permanence des fichiers SVG. Voir SVG benchmarks. Demande beaucoup de travail pour être fonctionnel s'il n'est pas inclus dans votre distribution.
- Inkscape fait également un travail précis pour les SVGs, moitié moins rapide que rsvg, mais il était prévu pour une utilisation graphique interactive; cependant il est associé à inkview qui est un programme de visualisation / conversion - il nécessite d'avoir les droits d'écritures sur le répertoire 'home' pour l'utilisateur qui l'exécute. Tant qu'il sera lancé en tant qu'utilisateur
www
ou quelque chose du même type, il essaiera de créer les répertoires.inkscape/
et.gnome2/
dans les répertoires home correspondants, et va échouer silencieusement, crasher ou rester indéfiniment suspendu s'il n'y arrive pas. Inkscape est préférable à rsvg (a) sous Windows (il est disponible en tant que paquet indépendant) ou (b) si vous avez des SVGs importants dessinés avec Inkscape dont le rendu n'est pas correct avec rsvg. Inkscape a des dépendances aussi compliquées que librsvg — à n'utiliser que s'il est compris dans votre distribution ou disponible en tant que paquet complet indépendant. - Sodipodi est le programme à partir duquel Inkscape a été créé. Les mêmes considérations s'appliquent. Sodipod ne fait plus l'objet d'un développement actif.
- Depuis la version 6.x.x ImageMagick affiche les SVGs, mais de manière imparfaite. C'est l'option par défaut, mais évitez-le si possible. Toutefois, il fonctionne. Sous Windows, $wgConvertPath doit être paramétré pour éviter un conflit avec le convert.exe spécifique de Windows. Une alternative simple à ce scenario est l'ajout de la ligne
$wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -background white -thumbnail $widthx$height^! $input PNG:$output';
dans le fichier LocalSettings.php, ce qui permet d'utiliser les espaces dans les chemins d'accès.- Pour éviter les erreurs de création des vignettes avec ImageMagick, si la version est ≥ 7.0.9-25, alors il faut que la version de Inkscape soit aussi ≥ 1.x.x. De la même manière, si la version de ImageMagick est < 7.0.9-25, alors la version de Inkscape doit aussi être < 1.x.x. Voir problème ImageMagick.
- L'extension PHP Imagick extension supporte l'affichage SVG, toutefois les mêmes considérations régulières que pour ImageMagick s'appliquent.
- La bibliothèque GD ne sait pas convertir les images SVG en format PNG, du moins d'après ce que disait le blog NoScope de Joen Asmussen en juin 2008.
- La plupart des navigateurs web sauf Internet Explorer (jusqu'à la version 9) peuvent afficher les SVGs directement. En utilisant librsvg pour convertir les SVGs en PNG, les résultats sont beaucoup plus précis et la bande passante consommée est moins importante. L'affichage SVG en direct n'est pas pris en charge par MediaWiki par défaut (tâche T5593), à moins que l'extension NativeSvgHandler ne soit installée. Or, in MediaWiki 1.41 or newer, set
$wgSVGNativeRendering = true
.
Initialisez $wgSVGConverter = false
si les rendus SVG ne sont pas nécessaires et si vous souhaitez que vos utilisateurs téléchargent le fichier svg pour le visualiser.
Résolution des problèmes
Si vous apercevez un carré blanc à la place du SVG (Chrome) ou qu'il n'y a pas d'image du tout (Firefox) et que tous les liens PNG conduisent à l'erreur 404 et que vous ne voyez aucun autre message d'erreur ailleurs, veuillez vérifier la variable $wgGenerateThumbnailOnParse
.
En le fixant à false
la transformation SVG peut être indéfiniment différée.
Assurez-vous que les méthodes PHP proc_open et symlink sont opérationnelles (elles peuvent avoir été désactivées dans php.ini pour des motifs de sécurité ou de performance).
JPEG (utilisant GD)
Ajoutez simplement la ligne suivante au fichier LocalSettings.php, ceci provoquera le repli automatique vers la bibliothèque GD.
$wgUseImageMagick = false;
Concernant les erreurs avec les vignettes JPEG, voir JPEG (utilisant GD).
TIFF
Pour générer les vignettes des fichiers TIFF, vous devez disposer de MediaWiki 1.15.0 ou plus récent.
- Autoriser le téléversement des fichiers TIFF dans le fichier LocalSettings.php :
$wgFileExtensions [] = 'tif';
- Ajoutez
$wgTiffThumbnailType
à LocalSettings.php et mettez la valeur à jpg ou png pour indiquer le type de vignette que vous souhaitez voir générer. - Générer des vignettes à partir de fichiers TIFF peut nécessiter des ressources systèmes qui excèdent celles utilisées pour créer les vignettes des fichiers JPEG, GIF, ou PNG. Tenez-compte de valeurs bien adaptées pour
$wgMaxImageArea
et$wgMaxShellMemory
DjVu
Suppression d'images
Les fichiers comme les pages wiki, ne peuvent être supprimés que par les utilisateurs ayant les droits pour Supprimer des pages (delete) (assignés aux administrateurs par défaut). La suppression des fichiers est faite dès qu'on supprime la page de description associée (ou en cliquant sur le lien supprimer tout de la table Historique du fichier).
Supprimer une révision spécifique
Si un fichier a été modifié, il existe un historique de la modification du fichier, affiché sur la page de l'article du fichier. Chaque révision possède un lien "supprimer" . Si vous cliquez dessus, la révision et le fichier sont supprimés.
Les informations concernant les anciennes révisions des fichiers sont stockées dans la table oldimage alors que les informations sur les anciennes révisions des pages sont stockées dans la table revision .
Restituer les fichiers supprimés
Les fichiers peuvent être restaurés exactement de la même manière que les pages d'un wiki classique. Le répertoire dans lequel les fichiers supprimés sont stockés est défini par Manuel:$wgDeletedDirectory . Les informations concernant les images supprimées sont stockées dans la table filearchive .
Supprimer des fichiers archivés
Depuis la version 1.11 de Mediawiki, les images supprimées restent par défaut encore sur le serveur. Si vous souhaitez supprimer des images d'archives sélectionnées, vous pouvez le faire en utilisant le script de maintenance eraseArchivedFile.php . Si vous souhaitez tous les supprimer, vous pouvez le faire avec le script deleteArchivedFiles.php . Si vous supprimez les fichiers d'archive, vous ne pourrez plus les restaurer.
Motifs de suppression d'un fichier
Si vous souhaitez supprimer un fichier, comme décrit ci-dessus, on vous demandera de fournir un motif pour la suppression. Les motifs disponibles sont sélectionnables dans la liste déroulante des motifs de suppression de votre wiki.
Stockage des données
Dès qu'une image est téléversée, plusieurs éléments sont créés :
- Un article de l'espace de noms File avec le nom du ficher, par exemple File:MyPicture.png. Cette page est enregistrée et peut être modifiée comme n'importe quelle autre page.
- Le fichier lui-même est rangé dans un répertoire du système de fichiers où tous les espaces du nom sont fusionnés et remplacés par un caractère
_
. - Si vous devez générer des vignettes et que la génération est disponible, elles seront créées quand il sera nécessaire (comme avec l'utilisation de la page de description du fichier). Les vignettes sont enregistrées séparément dans le sous-répertoire thumb du répertoire des images, en fonction du fichier principal.
Si $wgHashedUploadDirectory est activé (par défaut), MediaWiki crée plusieurs sous-répertoires dans le répertoire des images.
Les noms de répertoire sont les deux premiers caractères du code de hachage md5 du nom du dernier fichier.
Répertoires
Tous les fichiers d'image sont stockés dans un répertoire déterminé par $wgUploadPath (par défaut images/
).
Description des sous-répertoires nommés des images :
- archive
- anciens fichiers qui ont été remplacés par de nouvelles versions.
- temp
- Sert au stockage temporaire des fichiers lors du téléversement des images. (A cause de tâche T11018, il est possible que ces fichiers ne soient pas automatiquement supprimés)
- thumb
- Vignettes des fichiers (générées automatiquement). Si vous les supprimez, elles seront recréées automatiquement quand cela sera nécessaire.
En fonction de la configuration, il peut y avoir des sous-répertoires supplémentaires d'images :
- math
- Répertoire contenant les entrées TeX à générer, voir aussi Extension:Math ou Manuel:Math.
- x/xy
- Si
$wgHashedUploadDirectory
est initialisé àtrue
(par défaut), les images seront stockées dans les sous-répertoires des images; les chemins seront donc de la formeimages/a/ab/filename.jpg
. Voir Manuel:$wgHashedUploadDirectory pour plus de détails afin de savoir pourquoi ceci peut être souhaité et comment le système fonctionne.
Tables de la base de données
- La page de description du fichier est stockée comme n'importe quelle page dans les tables des pages, textes, révisions, etc.
- image - contient quelques métadonnées telles que la taille du fichier et la date du téléversement.
- oldimage - informations concernant les fichiers qui ont été remplacés par de nouvelles versions.
- filearchive - garde les informations concernannt les fichiers supprimés.
- imagelinks - enregistre les pages qui utilisent un fichier.
Utilisation de l'espace
Les fichiers ont besoin d'espace considérablement plus grand que les articles. Les calculs suivants supposent que la taille du bloc est de 4 ko et des serveurs Linux/Unix.
La valeur par défaut est $wgHashedUploadDirectory = true
.
Espace nécessaire pour l'ensemble des répertoires :
- répertoires d'images: 0-f/x0-f: max. 16*16 = 256 répertoires = 256*4 ko = 1024 ko
- répertoires d'archives : 0-f/x0-f: max. 16*16 = 256 répertoires = 256*4 ko = 1024 ko
- répertoires des vignettes : 0-f/x0-f: max. 16*16 = 256 répertoires = 256*4 ko = 1024 ko
- répertoires temporaires : 0-f/x0-f: max. 16*16 = 256 répertoires = 256*4 ko = 1024 ko
Pour cela, la quantité d'espace nécessaire à la base sans aucune image téléversée est de 4 MB en théorie (bien que les répertoires soient créés seulement quand c'est nécessaire).
Pour chaque fichier, nous avons besoin de :
- taille du fichier image original + 2 ko en moyenne pour les dépassements
Pour les fichiers qui ont besoin d'avoir leur vignette :
- taille de la ou des vignettes créées + 2 ko en moyenne pour les dépassements (pour chacune)
- répertoire des vignettes (4Ko) (chaque image possède son propre répertoire de vignettes)
Exemples :
- image png de 20778 octets (petite taille, pas de vignette) : 24 ko pour l'image : total 24 ko
- image jpeg de 123.000 octets (grande taille, vignette automatique) : 124 ko pour l'image, 4 ko pour le répertoire de la vignette, 64 ko pour la vignette: total: 192 ko
Accès aux fichiers
Les fichiers téléversés sont généralement distribués directement par le serveur web, et non pas via MediaWiki. Alors que l'on peut imaginer qu'il existe un niveau minimal de sécurité grâce à l'encodage des chemins (comme /c/c4/...), si $wgHashedUploadDirectory est initialisé, le chemin peut être calculé facilement à partir du nom de fichier ce qui ne fournit pas une réelle protection.
Pour limiter l'accès aux utilisateurs autorisés, voir Manuel:Droits d'accès aux images .
Formulaire de téléversement
Voir la documentation sur la configuration du formulaire de téléversement.
Gestion des licences
Une fonctionnalité de MediaWiki permet à la page Special:Upload de centraliser les licences des images. La page de téléversement de Wikipedia possède une liste déroulante des licences sous le résumé de l'image. Pour activer cette fonctionalité, les administrateurs système doivent modifier les licenses de l'espace de noms MediaWiki (exemple : MediaWiki:Licenses). Ils peuvent faire cela en allant sur la page MediaWiki:Licenses de leur wiki et cliquer sur 'create' pour créer ou 'edit' pour mettre à jour.
La page MediaWiki:Licenses utilise le format défini dans une liste wiki.
*subst:license 1|license 2|License text
* Header 1:
** cc-by-sa-2.5|Attribution ShareAlike 2.5
La ligne 1 génère le texte de la license en substituant le modèle license 1 dans la page de l'image et en transcluant license 2.
La ligne 2 affiche un entête grisé avec le texte Header 1 :
La ligne 3 produit Attribution ShareAlike 2.5 et transclut le modèle cc-by-sa-2.5 sur la page de l'image.
Pour un exemple détaillé et concret, voir MediaWiki:Licenses ou Commons:MediaWiki:Licenses.
Dépôts externes
Il est possible d'accèder aux fichiers stockés sur les dépôts externes, sans avoir à les téléverser sur le wiki, en initialisant le tableau $wgForeignFileRepos . Cette fonctionnalité offre plusieurs possibilités :
- ForeignAPIRepo permet d'accéder aux fichiers à partir d'une installation distante de MediaWiki telle que Wikimedia Commons, via son API
- ForeignDBRepo permet d'accéder aux fichiers à travers une base de données, ce qui est utile pour la créer les familles de wikis
- FSRepo accède aux fichiers à partir d'un répertoire local
Dans tous les cas, il doit être possible d'inclure des fichiers dans une page en utilisant la syntaxe habituelle des images et de spécifier le nom du fichier dans le dépôt externe. Notez-bien que certaines des implémentations ci-dessus sont encore expérimentales et qu'elles ne peuvent pas forcément convenir pour des sites de production.