我不知道如何正确地说出这个问题,所以我会尝试:
在this page上查看栅格化的SVG?看起来非常扭曲, - 请原谅我的语言 - 而不是s ***。现在让我们将其与here进行比较。它们都具有完全相同的SVG文件,并且源代码在wikitext中是相同的。区别在于光栅化"缩略图"生成,似乎。
我从MediaWiki获得的结果。
预期结果。
从我所注意到的 - 如果我错了,请纠正我 - 维基百科和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 :(得分:0)
已经通过从ImageMagick切换到RSVG来解决。
答案 1 :(得分:0)
答案 2 :(得分:0)
相信我,最好的解决方案就是禁用imageMagick,让SVG以原始的完美分辨率呈现为SVG。
在这里你可以看到正在开发的原生SVG功能,它还没有完成。 https://phabricator.wikimedia.org/T5593
这是针对wmf提出的beta功能opt-in svg: https://phabricator.wikimedia.org/T134482
" larson写道:
很想在客户端本地呈现SVG。在2013年,支持就在那里 - 尽管Brion在这方面发表了4年的评论。如果你不想在维基媒体网站上启用它,那很好,你不必。对于我的网站,我宁愿下载和缓存一次文件,而不是获取多个光栅化的文件大小。"
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;
如果你想阅读更多(虽然这是一个写得不好的页面): https://www.mediawiki.org/wiki/Manual:Image_administration#SVG
编辑: 更不用说,为什么****你会采用SVG,然后动态栅格化它们?您也可以将图像保存为png。 它破坏了SVG的所有巨大好处。
全分辨率清晰
可以使用css
过滤器
动画
完全可编辑的文件,只需在文本/代码编辑器中打开
较小的文件大小,取决于SVG的制作效率和复杂程度。
通过SVGOMG运行SVG,它可以大量优化文件。个人有时甚至可以在SVGOMG完成其工作后使用我自己的技术减少几十个字节。