Open main menu

手册:图片管理

This page is a translated version of the page Manual:Image administration and the translation is 37% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎français • ‎português • ‎português do Brasil • ‎русский • ‎العربية • ‎中文 • ‎日本語 • ‎한국어

这篇文章描述了MediaWiki如何存储于处理文件,并给出了配置的相关信息。

这可以应用于包括但不限于图片等可以被上传的文件类型。 所有文件存储在对应的"File:"命名空间中。 在 MediaWiki 1.14版本 之前,使用的是"Image:"命名空间 "Image:"仍然被保存以用于向下兼容。

图片的上传与使用

参见 Help:图像

启用图片上传

需要满足以下的条件才能上传文件:

  1. MediaWiki 必须启用了上传 $wgEnableUploads 设置为 true 。
  2. 文件类型必须被允许。 参见: $wgFileExtensions
  3. 用户必须位于具有 "upload" 权限的用户组中。 所有登录的用户默认具有此权限。

上传通过Special:Upload完成。

参见 手册:配置文件上传 Manual:Mime type detection

与文件处理有关的参数

以下参数与之相关:

图片缩略图

MediaWiki的扩展图像语法允许自动缩略图(参见手册:配置文件上传 获取文件上传的帮助)

Image thumbnailing requires either ImageMagick or GD library - neither are part of the default MediaWiki installation, although some versions of PHP include GD. ImageMagick is recommended if better quality thumbnails are needed; it can be downloaded from imagemagick.org. GD is included in some versions of PHP, and it is recommended to use GD on Windows systems. A standalone download of GD is available from LibGD GitHub.

  小心: MediaWiki 1.17 requires at least version 6.5.6-2 of ImageMagick.

In newer versions this is not required.

If you use ImageMagick, set $wgUseImageMagick to true in LocalSettings.php. Make sure the $wgImageMagickConvertCommand variable points to the (absolute) location of the convert command of your installation and that the command is executable by the web server process. For example, Windows users will want to change the default to "C:\ImageMagick\convert.exe" (or similar).

To re-create old thumbnail files before you used ImageMagick you can use $wgThumbnailEpoch .

If rendering fails silently, check and increase $wgMaxShellMemory .

See the help page on Image Thumbnails not working for troubleshooting.

GraphicsMagick can now also be used as an alternative to ImageMagick. You will need to set $wgImageMagickConvertCommand to the (absolute) location of the 'gm' command. 例如:

$wgImageMagickConvertCommand = "/usr/bin/gm";

GIF

For thumbnailing GIF-Animations under windows, you need to install ImageMagick as described above.

SVG

 
wikimania 2016动态SVG演示

Mediawiki支持SVG图像呈现:如果启用,SVG图像可以像其他图像文件一样使用-它们将自动呈现为PNG文件,并根据需要动态缩略图。 如果您在共享主机上,并且没有预先安装SVG渲染器,您可能应该要求提供商为您安装它。

为了开启 SVG 支持:

  1. 允许在localsettings.php文件中上载SVG文件:$wgFileExtensions [] = 'svg';请注意,出于安全原因,Mediawiki将拒绝包含javascript的SVG文件。
    要避免误报,请将$wgAllowTitlesInSVG = true;添加到LocalSettings.php 文件中。
    If you are using MediaWiki 1.34 or higher, $wgAllowTitlesInSVG is never applied and now always true. You can safely remove this in your LocalSettings.php file.
    如果您收到文件损坏的错误消息,请确保MIME类型检测 正常工作。
  2. 添加 $wgSVGConverter LocalSettings.php 并设置要使用的渲染器
    Available options are ImageMagick, ImagickExt, sodipodi, inkscape, batik, rsvg, and imgserv.
    例如: $wgSVGConverter = 'ImageMagick';
    • 如果转换器不在系统路径中,则必须指定包含转换器的路径$wgSVGConverterPath .
    • librsvg很快但不是很准确, It depends on a large number of libraries. To automatically install all these libraries, you may want to use a package manager. The Wikimedia projects use rsvg.
    • Batik is the most accurate SVG renderer available, although its anti-aliasing is sometimes suboptimal. Its SVG parsing is more strict, causing it to reject "almost valid" SVG files that other renderers accept (e.g. commons:File:UbuntuCoF.svg). Batik relies on Java, and is much slower than rsvg, though this may not be a huge issue unless you're constantly adding SVG files. 参见SVG基准。 Requires a lot of work to get running, if not included in your distribution.
    • Inkscape also does an accurate job of SVGs, half the speed of rsvg, but was designed for interactive graphical use; however, it comes with inkview which is a viewer/converter program - it requires a writable home directory for the user it's run as. Since it will be running as user www or something similar, it will try to create .inkscape/ and .gnome2/ directories in the corresponding home directory, and will fail silently, crash or hang indefinitely if it is not able to. Inkscape is preferable to rsvg (a) on Windows (it comes as a standalone package) or (b) if you have important SVGs drawn in Inkscape that do not render correctly in rsvg. Inkscape has as complicated a dependency chain as librsvg — use only if it's in your distribution or available as a complete standalone package.
    • Sodipodi is the program Inkscape was forked from. The same considerations apply. Sodipod is no longer under active development.
    • Since version 6.x.x ImageMagick renders SVGs, but imperfectly. 这是默认值,但最好应避免。 然而这能工作。 On Windows, $wgConvertPath must be set to avoid a conflict with Windows' own convert.exe. One simple alternative in this scenario is to add to LocalSettings.php the line $wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -background white -thumbnail $widthx$height^! $input PNG:$output';, which also allows for spaces in the path.
    • The PHP Imagick extension supports SVG rendering, however the same considerations as for the regular ImageMagick apply.
    • The GD library is not capable of converting SVG images to the PNG format, at least according to Joen Asmussen's June 2008 NoScope blog.
    • Most current web browsers except Internet Explorer (until version 9) can display SVGs directly. Using librsvg to render SVGs to a PNG will give much more accurate results, as well as less bandwidth consumption. Direct SVG display is not supported in MediaWiki by default (任务T5593), unless you install NativeSvgHandler extension.

Set $wgSVGConverter = false if SVG rendering is not needed and you wish to make your users download the svg file in order to view it.

Troubleshooting

If you see a blank square instead of SVG (Chrome) or no image at all (Firefox) and all PNG links lead to 404 error and you don't see any other error message anywhere please check $wgGenerateThumbnailOnParse variable. Setting it to false may make SVG transformation deferred always. Make sure that proc_open and symlink PHP methods are enabled (they may be disabled in php.ini for security or performance reasons).

JPEG (使用 GD)

Simply add the following line to LocalSettings.php, this will cause auto fall back to GD library.

$wgUseImageMagick = false;

For errors with JPEG thumbnails, see JPEG (using GD).

TIFF

Generating thumbnails of TIFF files requires MediaWiki 1.15.0 or newer.

  1. Allow upload of TIFF files in the LocalSettings.php file: $wgFileExtensions [] = 'tif';
  2. Add $wgTiffThumbnailType to LocalSettings.php and set to either jpg or png to specify which type of thumbnail you wish to have generated.
  3. Making thumbnails of TIFF files may require system resources beyond those needed for thumbnailing JPEG, GIF, or PNG files. Consider appropriate settings for $wgMaxImageArea and $wgMaxShellMemory

DjVu

删除图片

Files, like wiki pages, can only be deleted by users with the "删除页面 (delete)" permission (管理员 by default). Deletion of files is done by deleting the associated description page (or by clicking the "删除所有" link in the "文件历史" table).

删除个别修订版本

If a file has been altered, there is a revision history of the files which is displayed on the file article page. Each revision has a "删除" link. If this is clicked, the revision and the file are deleted.

The versions of files are separate from the page history of the file description page.

Information about old revisions of files are stored in the oldimage table while information on old revisions of the pages are stored in the revision table.

恢复文件

  警告: Before MediaWiki version 1.8, deleted images/files can not be undeleted (only the associated description page can be restored).

From MediaWiki version 1.8 up to 1.10, archiving deleted images/files (and thus undeleting them) is disabled per default, but can be enabled by setting $wgSaveDeletedFiles = true.

Since MediaWiki version 1.11, this is enabled per default, and $wgSaveDeletedFiles is deprecated. Since 1.23 the behavior was instead controlled by $wgFileStore .

Since 1.24 its controlled by 手册:$wgDeletedDirectory

Information about deleted images are stored in the filearchive table.

删除档案文件

自 MediaWiki 1.11版起,被删除的图片默认仍然存储在服务器上。 如果您需要删除特定的档案图片,您可以使用eraseArchivedFile.php 维护脚本。 如果您想要彻底删除它们,可以通过deleteArchivedFiles.php维护脚本。 如果您删除了档案文件,您将不能恢复这些文件。

删除文件的理由

When choosing to delete a file, as described above, users will be asked to provide a reason for deletion. The available reasons can be edited on the MediaWiki:Filedelete-reason-dropdown of your wiki.

数据存储

Whenever an image is uploaded, several things are created:

  1. An article in the file namespace with the name of the file, e.g. File:MyPicture.png. This page is stored and can be edited like any other page.
  2. The file itself is stored in a folder on the file system with whitespaces merged and replaced with _.
  3. If necessary and thumbnailing is available, thumbnailed versions of the file will be created when necessary (such as for the usage on the file description page. These are stored in the thumb directory of the image directory, in a separate directory for each main file.

If $wgHashedUploadDirectory is enabled (by default), MediaWiki creates several subdirectories in the images directory.

The directory names are from the first two characters of the md5 hash of the final filename.

文件夹

All image files are stored in a folder determined by $wgUploadPath (images/, by default).

Description of named image subfolders:

archive
This is the storage place for files that have been replaced by newer versions.
temp
used for temporary storage of files during image uploading. (Due to 任务T11018, these files may not always be automatically deleted)
thumb
Thumbnails (automatically generated) for the files. If these are deleted, they are automatically regenerated when needed.

Depending on the configuration, there may be additional image subfolders:

math
Folder to store your rendered TeX input, see also Manual:Enable TeX or Math.
x/xy
If $wgHashedUploadDirectory is set to true (which is the default), images will be stored in subfolders of the images, thus making file paths look like images/a/ab/filename.jpg. See 手册:$wgHashedUploadDirectory for more details on why this might be desired and how this system works.

数据表

  • The file description page is stored as any page in the page, text, revision etc. tables
  • image table: Holds some metadata such as the size of the file and the upload date.
  • oldimage table: This is stores information for files that have been replaced with newer versions.
  • filearchive table: holds the information on the deleted files.
  • imagelinks table: Records what pages use a file.

空间使用

Files need considerably more space than articles. The following calculations assume a block size of 4KB with Linux/Unix servers.

默认设置为$wgHashedUploadDirectory = true。

所有目录的空间要求:

  • image directories: 0-f/x0-f: max. 16*16 = 256 directories = 256*4 KB = 1024 KB
  • archive directories: 0-f/x0-f: max. 16*16 = 256 directories = 256*4 KB = 1024 KB
  • thumb directories: 0-f/x0-f: max. 16*16 = 256 directories = 256*4 KB = 1024 KB
  • temp directories: 0-f/x0-f: max. 16*16 = 256 directories = 256*4 KB = 1024 KB

Therefore, the basic amount of space needed without any images uploaded is 4 MB in theory (although the directories are created only when needed).

对于每个文件,我们需要:

  • size of the original image file + 2 KB average overhead

For files that need to be thumbnailed:

  • size of the created thumbnail(s) + 2 KB average overhead (each)
  • directory for thumbnail (4KB) (each image has its own thumbnail directory)

例如:

  • image 20778 Byte png (small size, no thumb): 24 KB for the image: Total 24 KB
  • image 123.000 Byte jpeg (big size, auto thumb): 124 KB for the image, 4KB for the thumb directory, 64 KB for the thumb: Total: 192 KB

文件访问

Uploaded files are generally served directly by the web server, not through MediaWiki. While there may be a minimal level of security through obscurity with path encryption (eg. /c/c4/...) if $wgHashedUploadDirectory is set, the path can be calculated easily from the file name and does not provide true protection.

For limiting access to authorized users, see Image Authorization

许可

A feature of MediaWiki allows the Special:Upload Page to streamline licensing of images. Wikipedia's Upload Page has a Licensing drop down box below image summary. This feature is turned off in default MediaWiki. To turn this feature on a sysop needs to edit Licenses in the MediaWiki namespace (example: MediaWiki:Licenses). S/he can do this by going to the MediaWiki:Licenses page of their wiki and clicking 'create' or 'edit'.

The page MediaWiki:Licenses expects a certain format in a wiki list.

*subst:license 1|license 2|License text
* Header 1:
** cc-by-sa-2.5|Attribution ShareAlike 2.5

Line 1 will produce "License text" and substitute the license 1 template in the image page and transclude license 2.
Line 2 will show a greyed out header with text "Header 1:"
Line 3 will produce "Attribution ShareAlike 2.5" and transclude template cc-by-sa-2.5 on the image page.

For detailed real world example, see Wikipedia:MediaWiki:Licenses or Commons:MediaWiki:Licenses.

外部仓库

It is possible to access files stored in foreign repositories, without needing to upload them to the wiki, by setting the $wgForeignFileRepos array. 这个特性提供了如下可能:

  • ForeignAPIRepo accesses files from a remote MediaWiki installation, such as Wikimedia Commons, through its API
  • ForeignDBRepo accesses files through a database, and is useful for creating wiki families
  • FSRepo 从本地文件夹访问文件

In all cases, one would be able to embed files into a page using ordinary image syntax and specifying the name of the file in the foreign repository. Note that some of the above implementations are still experimental, and might not be suitable for production sites.

MediaWiki 版本

可以应用于:

  • MediaWiki 1.9.x 及以上版本
  • 其他版本并未经过验证