Manual:图片管理
这篇文章描述了MediaWiki如何存储于处理文件,并给出了配置的相关信息。
这可以应用于包括但不限于图片等可以被上传的文件类型。 所有文件存储在对应的"File:"命名空间中。 在MediaWiki 1.14版本之前,使用的是“Image:”命名空间 “Image:”仍然被保留为别名以向下兼容。
图片的上传与使用
参见 Help:图片
启用图片上传
需要满足以下的条件才能上传文件:
- MediaWiki 必须启用了上传 将$wgEnableUploads 设置为
true
。 - 文件类型必须被允许。 参见:$wgFileExtensions 。
- 用户必须位于具有 "upload" 权限的用户组中。 所有登录的用户默认具有此权限。
上传通过 Special:Upload 完成。
参见 手册:配置文件上传 ,Manual:MIME type detection 及Manual:Adding support for new filetypes
与文件处理有关的参数
以下参数与之相关:
图片缩略图
MediaWiki的图像语法允许动态调整图片大小和生成图片的缩略图(参见手册:配置文件上传 获取文件上传的一般帮助)
图像缩略图需要ImageMagick或GD library——两者都不是MediaWiki 默认安装的一部分。
GD
PHP comes with GD graphics library enabled by default. GD will not require any configuration or modification to be used.
GD can be downloaded from https://libgd.github.io/. 不需要使用較新的版本。
ImageMagick
In MediaWiki, enable ImageMagick in LocalSettings.php
by setting $wgUseImageMagick to true
.
ImageMagick can be downloaded from https://imagemagick.org/.
Once ImageMagick is installed, you must enable ImageMagick and point MediaWiki to the convert
or convert.exe
program on your computer in LocalSettings.php like this:
$wgUseImageMagick = true;
#$wgImageMagickConvertCommand = 'C:/ImageMagick/convert.exe'; # for Windows
$wgImageMagickConvertCommand = '/usr/bin/convert'; # for Linux
如果使用ImageMagick,请在LocalSettings.php中将$wgUseImageMagick 设置为true
。
Make sure that the command is executable by the web server process.
例如,Windows用戶將需要將默認值更改為“C:\ImageMagick\convert.exe”(或類似名稱)。
要在使用ImageMagick之前重新創建舊的縮略圖文件,可以使用$wgThumbnailEpoch 。
If rendering fails silently, check and increase $wgMaxShellMemory .
GraphicsMagick can also be used as an alternative to ImageMagick. You will need to set $wgCustomConvertCommand to the following. 例如:
$wgUseImageMagick = false;
$wgCustomConvertCommand = "gm convert %s -resize %wx%h %d";
Image formats
GIF
要在windows下使用缩略图绘制GIF-“动画”,需要如上所述安装ImageMagick。
SVG
Mediawiki支持SVG图像呈现:如果启用,SVG图像可以像其他图像文件一样使用-它们将自动呈现为PNG文件,并根据需要动态缩略图。 如果您在共享主机上,并且没有预先安装SVG渲染器,您可能应该要求提供商为您安装它。
为了开启 SVG 支持:
- 允许在localsettings.php文件中上载SVG文件:
$wgFileExtensions [] = 'svg';
请注意,出于安全原因,Mediawiki将拒绝包含javascript的SVG文件。
- 如果您收到文件损坏的错误消息,请确保MIME类型检测 正常工作。
- 添加
$wgSVGConverter
到 LocalSettings.php 并设置要使用的渲染器- 有以下几个可选的渲染器:ImageMagick、ImagickExt、sodipodi、inkscape、batik、rsvg和imgserv。
- 例如:
$wgSVGConverter = 'ImageMagick';
- 如果转换器不在系统路径中,则必须指定包含转换器的路径
$wgSVGConverterPath
。. - librsvg很快但不是很准确, 它依赖于大量的资料。要自动安装所有这些库,您可能需要使用软件包管理器。 维基媒体计划参与者们都使用rsvg。
- Batik在可用的SVG渲染器中最为著名,尽管它的抗锯齿能力较次。 它的 SVG 解析更加严格,导致它会排斥其他渲染器接受的所谓“几乎有效”的 SVG 文件(比如 commons:File:UbuntuCoF.svg)。 Batik依赖于Java,并且比rsvg慢得多。当然,除非您不断地添加SVG文件,否则这可能不是一个大问题。 参见 SVG benchmarks 。 如果它未包含在您的发行版中,则需要大量工作才能运行。
- 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.
这是默认值,但最好应避免。 然而这能工作。 在Windows上,必须设置$wgConvertPath以避免与Windows自带的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.
- To prevent thumbnail creation errors with ImageMagick, if it's ≥ 7.0.9-25, then Inkscape must also be ≥ 1.x.x. Likewise, if ImageMagick is < 7.0.9-25, then Inkscape must also be < 1.x.x.
See ImageMagick issue.
- 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.
- 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
.
- 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
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 adding the following line to LocalSettings.php
will cause auto fall back to the GD library:
$wgUseImageMagick = false;
For errors with JPEG thumbnails, see JPEG (using GD).
TIFF
生成TIFF文件的缩略图需要MediaWiki 1.15.0或更新的版本。
- 允许在LocalSettings.php文件中上载TIFF文件:
$wgFileExtensions [] = 'tif';
- 将
$wgTiffThumbnailType
添加到LocalSettings.php 并设置为jpg或png,以指定希望生成的缩略图类型。
- 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.
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.
恢复文件
可以使用与普通wiki页面完全相同的方式取消删除文件。 存储已删除文件的目录由手册:$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:
- 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.
- The file itself is stored in a folder on the file system with whitespaces merged and replaced with
_
.
- 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 Extension:數學 or 手册:數學 .
- x/xy
- If
$wgHashedUploadDirectory
is set totrue
(which is the default), images will be stored in subfolders of the images, thus making file paths look likeimages/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 - Holds some metadata such as the size of the file and the upload date.
- oldimage - This stores information for files that have been replaced with newer versions.
- filearchive - Holds the information on the deleted files.
- imagelinks - 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, 4 KB for the thumb directory, 64KB 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 (e.g. /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 Manual:Image authorization .
Upload form
许可
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.
For detailed real world example, see Wikipedia:MediaWiki:Licenses or Commons:MediaWiki:Licenses.
外部仓库
通过设置$wgForeignFileRepos 数组,可以访问存储在外部存储库中的文件,而无需将其上载到wiki。 这个特性提供了如下可能:
- “'ForeignAPIRepo'”通过其API访问远程MediaWiki安装中的文件,例如 Wikimedia commons
- ForeignDBRepo通过数据库访问文件,对于创建wiki families非常有用
- "‘FSRepo'" 从本地文件夹访问文件
在所有情况下,都可以使用图像语法将文件嵌入到页面中,并在外部存储库中指定文件名。 请注意,上面的一些实现仍然是实验性的,可能不适合生成站点。