转换(或重新压缩)嵌入在SVG中的位图/光栅图像?

时间:2017-06-15 16:52:55

标签: svg

可以将位图/光栅图像嵌入到SVG中(通过图像标记)。

是否有工具(更好的命令行)来更改嵌入式位图的格式或压缩?例如,我有一个带嵌入式PNG位图图像的SVG。我正在寻找一种可以被称为

的工具
svgconvertertool -convert_embedded_pngs_to_jpg -compression high  -f original.svg -out result.svg

创建一个与原始svg类似的新svg,除了所有嵌入的png都转换为jpg。

背景:我想减少几个SVG的文件大小。文件大小基本上由嵌入式PNG确定,我想将其转换为(低质量)JPG。

imagemagick知道这个技巧吗?

1 个答案:

答案 0 :(得分:1)

由于我没有找到工具,我写了Java based solution。这可以通过

运行
java -cp "«pathto»/png_to_jpg_in_svg/bin" PNG_to_JPG_in_SVG «file|folder»

它可以处理单个SVG«文件»或传递包含在«文件夹»中的所有SVG。如果找到嵌入的PNG,则将其替换为JPG版本。由于JPG不支持透明度,因此背景设置为白色。压缩质量设置为50%。

当我完成后,我发现FlorianEßer发表了python script做同样的伎俩。他的工具需要Python并使用Python Imaging Library(PIL)。

也许有一种方法可以使用命令行工具(如sed和imagemagick)来完成这个技巧,但我还没有找到一个工作脚本来提取/替换嵌入的文件,以便imagemagick可以使用它。唉,我在Inkscape中找不到合适的命令。

PS:我很惊讶有人“贬低”了我的问题。在我们的例子中,我能够将Sketch(具有糟糕的SVG导出)导出的SVG的文件大小减少4倍!如果有人知道其他工具,我会很高兴听到它。