我正在使用Carrierwave和RMagick將圖像上傳到我的Rails應用程序。我有一個image_uploader
這樣的:如何使用carrierwave,resize_and_pad方法和jpg放置透明背景?
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是一個正常的圖像,例如300像素×300像素。我的resize_and_pad
方法將圖像填充到300px×400px。那些我想要打印的100像素必須是透明的,但由於JPG不能具有透明背景,因此在應用resize_and_pad
之前,我嘗試將其轉換爲PNG。我的問題是,最終的結果是一個帶有白色背景而不是透明背景的圖像。
看到http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – 2014-12-10 10:34:52