回形针 - 将 SVG 转换为 PNG 时保持透明度

Posted

技术标签:

【中文标题】回形针 - 将 SVG 转换为 PNG 时保持透明度【英文标题】:Paperclip - Maintaining transparency when converting SVG to PNG 【发布时间】:2012-03-22 21:37:27 【问题描述】:

我有一个地方,我使用回形针上传 SVG 文件,并将其转换为具有相同尺寸的 PNG。 转换后,当我上传的 SVG 具有透明背景时,我的最终 PNG 输出具有白色背景。

尝试使用回形针 convert_options,但它没有提供正确的输出,例如图像的边界上都有一些白色像素。

例如,反式

终于让它使用了 after_save 方法,该方法使用 inkscape 将我的 SVG 转换为 PNG 并替换回形针生成的 PNG。

例如,inkscape --export-png=OUTPUT.png INPUT.svg

但这看起来像是一项双重工作,使用回形针(IM)和inkscape。 那么,当我上传的 SVG 具有透明背景时,有没有其他方法可以使用具有透明背景的回形针来获得正确的 PNG。

提前致谢,

【问题讨论】:

【参考方案1】:

我通过 Paperclip 'source_file_options' 选项修复了问题:

has_attached_file :icon,
                    source_file_options:   all: '-background transparent' ,
                    styles: 
                      :"200" => ["200", :png],
                    

【讨论】:

【参考方案2】:

终于自己解决了这个问题... :) 这是我的错,因为我没有看到“-layers merge”从初始化程序添加到我的回形针命令中......

回形针::Attachment.default_options[:convert_options] = :all => '-图层合并'

终于让它与回形针(IM)本身一起工作...... 希望它会帮助某人..... :)

【讨论】:

这个解决方案对我不起作用。 @Shaliko 解决方案效果很好。

以上是关于回形针 - 将 SVG 转换为 PNG 时保持透明度的主要内容,如果未能解决你的问题,请参考以下文章

转换为png时如何更改图像中的单一颜色?

使用 CMYK 和透明度将 PDF 转换为 Tiff

将 SVG 转换为 PNG,并将应用的图像作为 svg 元素的背景

如何将 PNG 图像转换为 SVG? [关闭]

Right ImageMagick 通过 php 从 yr.no 将 svg 转换为 png

将 png 转换为 jpeg 会增加图像大小