2017-08-07 178 views
0

我不完全知道如何正确地说出这个问题,所以我会尝试:如何从MediaWiki中的低分辨率SVG获取高分辨率缩略图?

请参阅this page上的栅格化SVG?看起来相当扭曲,并且 - 对不起,语言 - 而是***。现在我们来比较一下here。它们都有完全相同的SVG文件,并且源代码在wiki文本中是相同的。看起来,区别在于栅格化“缩略图”是如何生成的。

The result that MediaWiki gives me

结果我从链接到MediaWiki得到。

Intended result

预期的结果。

从我注意到的问题 - 如果我错了 - 纠正我,如果我错了 - 维基百科和Wikia都会为SVG创建几个栅格化缩略图,或者只是根据需要生成它们,具体取决于页面的大小。然而,默认情况下,MediaWiki只会生成一个缩略图,暗示其具有与原始SVG相同的分辨率 - 当将小型SVG光栅化为大图时,这会给我们带来模糊和****光栅图像。

要么是这样,要么SVG在缩略图/光栅化之前没有被缩放/调整大小。

只是为了抬起头,下面是一些来自我的LocalSettings.php:

$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 
    'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'ogg', 'svg', 
    'woff', 'eot', 'woff2' 
); 
// $wgSVGConverters['ImageMagick'] = '"' . $wgImageMagickConvertCommand . '" -background white -thumbnail $widthx$height^! $input PNG:$output'; 
// $wgSVGConverters['ImageMagick'] = '$path/convert -density $width -geometry $width $input PNG:$output'; 
$wgSVGConverters['ImageMagick'] = '$path/convert -density 1200 -background none -geometry $width $input PNG:$output'; 
$wgSVGConverters['rsvg'] = '/usr/bin/rsvg-convert -w $width -h $height $input -o $output'; 
$wgSVGConverter = 'ImageMagick'; 
// $wgSVGConverter = 'rsvg'; 
$wgSVGMaxSize = 2048; 
$wgMaxImageArea = 1.25e7; 
$wgMaxAnimatedGifArea = 1.0e6; 
$wgUseImageResize = true; 
$wgGenerateThumbnailOnParse = true; 

所以...我如何打开有多个缩略图,如果缺少这些是问题的原因是什么?这甚至是问题的起因吗?如果不是,我没有得到预期结果的真正原因是什么?我能做什么?

编辑:已经通过切换到ImageMagick到RSVG解决。

回答

0

在Imagemagick中,您只需在读取svg文件之前提供大密度。所以这对我有用。

convert -density 600 The_Mystics.svg mystics.png 

enter image description here

+0

是的,我已经想通了。服务器 - 我不属于我,我只具有对Wiki部分的写入和读取权限,但没有root权限 - 拥有Gentoo Linux,并且显然拥有一个忽略密度的旧版本Imagick。因此,我唯一的解决方案是切换到RSVG(幸运的是,服务器也安装了该服务器)。 –

0

已经通过从ImageMagick切换到RSVG来解决。

0

相信我,最好的解决办法就是禁用ImageMagick的,只是让SVGs被渲染成SVGs,在原来的完美解决方案。

在这里您可以看到正在开发的本地SVG功能,但尚未完成。 https://phabricator.wikimedia.org/T5593

下面是一个测试版功能选择在SVG的WMF建议: https://phabricator.wikimedia.org/T134482

“拉尔森写道:

很想有在客户端本地地呈现SVG这是2013年,支持尽管如此,Brion在这方面还是有4年的评论,如果你不想在维基媒体网站上启用它,那么你不需要。对于我的网站,我宁愿让文件下载并缓存一次,而不是获取多个栅格化的resizings。“

Mediawiki文档似乎假装客户端呈现的SVG是在99%的网站上完成的,渲染到PNG的过程永远都不会完成,他们基本上忽略了原生SVG处理是一个选项,并且对于任何非wmf网站来说都是最佳选择 这主要是因为文档需要更新并且是一团糟,没有恶意。

ImageMagick的是越野车和MediaWiki的GD库将被用来代替正常的图像。

的唯一原因的mediawiki PNG呈现svgs是因为他们喜欢支持真正的旧浏览器,比如没有人使用的IE6。他们这样做是因为维基百科的用户群非常庞大,并且所有人口统计数据都使用它。

让SVG由浏览器,客户端呈现。您将使用更少的服务器功能,并且不会有大量被弃用的依赖关系链担心。

安装此: https://www.mediawiki.org/wiki/Extension:NativeSvgHandler

$wgFileExtensions[] = 'svg'; 
$wgAllowTitlesInSVG = true; 
$wgUseImageMagick = false; 

//Make sure this variable is false or not there at all: 
$wgSVGConverter = false; 

如果您想了解更多(这是一个写得不好的页面虽然):

编辑: 且不说,为什么*** *你会采用SVG,然后动态栅格化它们吗?你不妨先将图像保存为png。 它破坏了SVG的所有优点。

  • 完全分辨率脆

  • 可以通过CSS样式

  • 过滤器

  • 动画

  • 完全可编辑的文件,只需在文本/代码编辑器

    打开
  • 较小的文件大小取决于SVG的制作效率和复杂程度。

通过SVGOMG运行SVGs,它可以优化文件很多。就个人而言,在SVGOMG完成其工作后,甚至有可能用我自己的技术缩小几十个字节。