我正在使用图像处理宝石与MiniMagick和Shrine的组合。当我使用resize_to_limit!/2
方法时,当原始图像具有透明背景时,生成的导数具有黑色背景。我该如何补救?我宁愿保持阿尔法,但我可以生活在一个白色的背景,而不是黑色。
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick.source(original)
{ resized: magick.resize_to_limit!(215, 50) }
end
1条答案
按热度按时间oiopk7p51#
如果原始文件没有扩展名,MiniMagick似乎会将文件转换为JPG(请参阅:方法文件和方法实施)
你可能会说你的文件有一个扩展名-它有,但在直接上传到S3(我假设你可能会用Shrine来做,因为你面临这个特殊的问题)的过程中,文件被保存时没有文件名中的扩展名,而关于扩展名的信息被保存在文件元数据中。
如何修复它,使原来的PNG文件将保持PNG与透明的背景?您可以获取元数据并将文件转换为其原始扩展名,也可以转换为
''
,这样就不会触发默认的JPG转换代码片段:
或者,正如我提到的,你可以尝试从元数据中获取扩展: