【发布时间】:2013-04-14 02:24:20
【问题描述】:
我正在使用 Carrierwave 和 RMagick 将图像上传到我的 Rails 应用程序。我有一个这样的image_uploader:
class ImageUploader < CarrierWave::Uploader::Base
# ... Other stuff ...
process :convert => 'png'
def filename
super.chomp(File.extname(super)) + '.png'
end
# ...
version :resized_image do
process :resize_and_pad => [X, Y]
end
# ...
end
我的问题是,当我上传 png 图像时,resize_and_pad 方法正在添加透明背景以适应指定的尺寸。但是当我上传 jpg 图像时,它被转换为 png 但背景是白色而不是透明的,可能是因为图像在调整大小后而不是之前被转换为 png。
那么,有什么办法可以解决这个问题吗?是否有任何可能的方法来确保在 resize_and_pad 之前调用 convert 方法以将透明背景添加到调整大小的图像?
编辑
我举个例子让我的问题更清楚:
上传的 JPG 为普通图片,例如 300px × 300px。我的resize_and_pad 方法将图像填充到 300px × 400px。我要填充的那些100px必须是透明的,但由于JPG不能有透明背景,我在应用resize_and_pad之前尝试转换为PNG。我的问题是最终结果是白色背景而不是透明背景的图像。
【问题讨论】:
标签: ruby-on-rails carrierwave rmagick