纸片 - 将SVG转换为PNG时如何保持透明度

3
我有一个地方使用paperclip上传SVG文件,并将其转换为具有相同尺寸的PNG。当它被转换时,我的最终PNG输出具有白色背景,而我上传的SVG具有透明背景。
尝试使用paperclip convert_options,但它没有提供正确的输出,例如图像在边框周围有一些白色像素。
例如,trans <<“-fuzz 0% -transparent'rgb(255,255,255)'”
最终通过一个after_save方法使其工作,该方法使用inkscape将我的SVG转换为PNG并替换由paperclip生成的PNG。
例如,inkscape --export-png = OUTPUT.png INPUT.svg
但这看起来像是一项双重工作,使用paperclip(IM)和inkscape。那么,在我的上传的SVG具有透明背景时,是否有其他方法可以使用带有透明背景的proper PNG使用paperclip?
提前致谢,
2个回答

3

我通过Paperclip的“source_file_options”选项解决了问题:

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

2

最终我自己解决了这个问题... :) 问题出在我没有看到"-layers merge"被添加到我的paperclip命令中的initializers文件里...

Paperclip::Attachment.default_options[:convert_options] = { :all => '-layers merge' }

最终我成功地用paperclip(IM)本身解决了它... 希望能帮助到其他人..... :)


这个解决方案对我没用。@Shaliko的解决方案非常好。 - Andrew Cetinic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接