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 , Détection du type de MIME 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é.- 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.
- 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.
- 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
- Depuis la version 6.x.x ImageMagick affiche les SVGs, mais de manière imparfaite.
- 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.
- Over 98% of web browsers have at least basic support for displaying SVG files directly, but MediaWiki does not use that by default.[notes 1] Without the NativeSvgHandler extension, MediaWiki only supports client-side rendering in MediaWiki 1.41 (released December 2023) and newer, by setting
$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 avec la permission 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.
Modifying the display of file pages
MediaWiki:Filepage.css is a standard stylesheet which can be used to modify the display of file pages. The contents of Filepage.css will be loaded only on File namespace pages. If remote files are enabled, the remote wiki's version of this page will also load.
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
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 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
MediaWiki allows licenses to be added to files uploaded from the Special:Upload page. The list of licenses that appear in the license selection dropdown can be edited on the MediaWiki:Licenses page by a sysop.
The page should be a bulleted list of items, and can have sub-items.
Each item can have one or more parameters, with the parameter separated by the pipe character (|
).
To make headers/categories, use only one parameter in a list item. The text will be what appears in the dropdown list, and will appear greyed-out and unclickable.
To add license options, two or more parameters are required. The first parameter will be the template name to use, without the double square brackets. The last parameter will be what appears in the dropdown list for that license. Any additional parameters between the first and last parameters will be passed as arguments to the template. When a license is selected, a preview of what it would look like on the final page is shown in the upload wizard.
Below is a simple example (not using real templates) of how MediaWiki:Licenses should be formatted:
* no-lic|No license. * Made by me: ** self-lic|And it can only be used on this wiki. ** self-lic|free=yes|And I allow it to be used anywhere. * Made by someone else: ** pd-lic|It's in the public domain. ** copyright-lic|It's copyrighted. ** cc-lic|It uses some CreativeCommons license. ** cc-lic|by-sa|It uses the CC-BY-SA license.
The above assumes each template ending in "-lic" exists, where some of those templates take positional arguments such as "by-sa" and others take named arguments such as "free=yes". Selecting the "And I allow it to be used anywhere" option, for example, would add the following text to the page of the new file:
{{self-lic|free=yes}}
Sites like Wikipedia and WikiMedia Commons will also use the subst:
tag, such as WikiMedia Common's usage of it below:
** subst:Template 2|flickrreview|subst:uwl|Image from Flickr and I do not know the license
"Template 2" is an actual template that will take two parameters (being template names) and surround them with double curly brackets so they get transcluded on the page of the new image. "uwl" is a template, whose documentation requires using it with the "subst:" tag instead of directly. The above will result in the following being added to the uploaded file's page:
{{flickrreview}}{{subst:uwl}}
On Wikipedia, substitution is used in other ways, such as adding a timestamp with the license at the time of upload.
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.
Notes
- ↑ Wikimedia sites also do not rely on client-side rendering, despite a request to do so, tâche T5593.