我正在使用 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。
那么,有没有办法解决这个问题呢?是否有任何可能的方法来确保在将透明背景添加到调整大小的图像convert
之前调用该方法?resize_and_pad
编辑
我举了一个例子来让我的问题更清楚:
上传的 JPG 为普通图片,例如 300px × 300px。我的resize_and_pad
方法将图像填充到 300px × 400px。我要填充的那些 100px 必须是透明的,但是由于 JPG 不能有透明背景,我尝试在应用resize_and_pad
. 我的问题是最终结果是具有白色背景而不是透明背景的图像。