可以将位图/光栅图像嵌入到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知道这个技巧吗?
答案 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倍!如果有人知道其他工具,我会很高兴听到它。