首页 文章

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

提问于
浏览
0

可以将位图/光栅图像嵌入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 回答

  • 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并使用Python Imaging Library(PIL) .

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


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

相关问题