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'à tout autre type de fichier pouvant être téléversé. 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 connectés.
Les téléversements se font en utilisant Special:Upload.
Voir Configuration du téléversement de fichiers , Détection du type de MIME et Ajouter la prise en charge de nouveaux types de fichiers
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 redimensionné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 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 des 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é.- 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.
- 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.
- Apache Batik mais son anti-aliasing est 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.
- ImageMagick est la valeur par défaut, mais il affiche de manière imparfaite, à éviter si possible.
- 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 fichierLocalSettings.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.
- 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
- 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.
- Plus de 98% des navigateurs Web ont au moins une prise en charge de base pour afficher directement des fichiers SVG, mais MediaWiki n'utilise pas cela par défaut.[notes 1] Sans l'extension NativeSvgHandler , MediaWiki ne prend en charge que le rendu côté client dans MediaWiki 1.41 (diffusé en décembre 2023) et si plus récent, en définissant
$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 Supprimer des pages
(supprimer) (administrateurs par défaut).
La suppression des fichiers se fait en supprimant la page de description associée (ou en cliquant sur le lien supprimer tout
dans le tableau 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 a 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 MediaWiki:Filedelete-reason-dropdown de votre wiki.
Modifier l'affichage des pages de File:
MediaWiki:Filepage.css is a standard stylesheet which can be used to modify the display of file pages. Le contenu de Filepage.css ne sera chargé que sur les pages de l'espace de noms File: . Si les fichiers distants ont été activés, la version de cette page dans le wiki distant pourra aussi être chargée.
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 de noms sont fusionnés et remplacés par
_
. - 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 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 vos entrées TeX générées, 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
page
,text
,revision
, 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 20 778 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
MediaWiki permet d'ajouter des licences aux fichiers téléversés à partir de la page Special:Upload. La liste des licences qui apparaissent dans le menu déroulant de sélection des licences peut être modifiée sur la page MediaWiki:Licenses par un administrateur système.
La page doit être une liste à puces d'éléments avec éventuellement des sous-éléments.
Each item can have one or more parameters, with the parameter separated by the pipe character (|
).
Pour créer des en-têtes ou les catégories, utilisez uniquement un seul paramètre d'un élément de liste. Le texte apparaîtra dans la liste déroulante; il sera grisé et non cliquable.
Pour ajouter les options de licence, deux paramètres ou plus sont nécessaires. Le premier paramètre sera le nom du modèle à utiliser, sans les doubles crochets. Le dernier paramètre sera ce qui apparaît dans la liste déroulante, pour cette licence. Tout paramètre supplémentaire entre le premier et le dernier, sera transmis en tant qu'argument du modèle. Lorsqu'une licence est sélectionnée, on affiche dans l'assistant de téléchargement, un aperçu de ce à quoi elle ressemblera sur la dernière page.
Le tableau ci-dessous est un exemple simple (n'utilisant pas les vrais modèles) pour indiquer comment MediaWiki:Licenses doit être formaté :
Type de travail | Couverture | Modèle à utiliser |
---|---|---|
Travail sans licence | — | {{no-lic|No license.}} |
Travail fait par moi | Utilisé sur ce wiki | {{self-lic|And it can only be used on this wiki.}} |
Utilisé partout | {{self-lic|free=yes|And I allow it to be used anywhere.}} | |
Travail fait par une autre personne | Travail appartenant au domaine public | {{pd-lic|It's in the public domain.}} |
Travail sous droits d'auteur | {{copyright-lic|It's copyrighted.}} | |
Travail sous une licence CreativeCommons | {{cc-lic|It uses some CreativeCommons license.}} | |
Travail sous la licence CC-BY-SA | {{cc-lic|by-sa|It uses the CC-BY-SA license.}} |
Ce qui précède suppose que chaque modèle qui se termine par -lic existe déjà, où certains de ces modèles ont des arguments positionnels tels que by-sa et d'autres prennent des arguments nommés tels que free=yes. Par exemple, en sélectionnant l'option Et je permets son utilisation n'importe où, on ajoutera le modèle suivant à la page du nouveau fichier :
{{self-lic|free=yes}}
Des sites comme Wikipedia et WikiMedia Commons utiliseront aussi la balise subst:
, comme l'utilisation de WikiMedia Common ci-dessous :
** subst:Template 2|flickrreview|subst:uwl|Image from Flickr and I do not know the license
Template 2 est un modèle existant qui prend deux paramètres (ce sont eux-mêmes des noms de modèles) et les met entre des parenthèses doubles pour être qu'ils soient transclus sur la page de la nouvelle image. uwl est un modèle que la documentation demande à utiliser avec la balise subst: plutôt que directement. De ce qui précède il sera ajouté ce qui suit à la page du fichier téléversé :
{{flickrreview}}{{subst:uwl}}
Sur Wikipedia, la substitution est utilisée d'autres façons, comme en ajoutant un horodatage avec la licence au moment du téléversement.
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.