我想Carrierwave
生成一個圖像的幾個版本,一個在PNG格式,一個在JPEG格式,但我似乎無法得到它的工作。我意識到在這裏和其他地方都會問到幾個類似的問題,但我沒有找到解決方案。粗略地說,這裏是我的:載波故障:轉換
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
version :jpeg do
process :convert => 'jpg'
# more procesors
process :processed => :jpg
end
version :png do
process :convert => 'png'
# more processors
process :processed => :png
end
def store_path(for_file = filename)
if version_name != :png
return "#{version_name}.jpg"
else
return "#{version_name}.png"
end
end
def filename
filename = if version_name != :png
super != nil ? super.split('.').first + '.jpg' : super
else
super != nil ? super.split('.').first + '.png' : super
end
end
end
所以,無論圖像格式我傳遞的類型,這將產生兩個文件:一個名爲jpg.jpg
,以及一個名爲png.png
。 jpg.jpg
確實總是一個JPEG文件(通過Unix的file
命令驗證),但是png.png
只是一個真正的PNG格式化文件,當且僅當我最初傳入一個png格式文件時(傳遞JPEG格式文件中的jpeg結果) !
想法?
這可能不是很有用,但我發現在Carrierwave
本身可疑convert
方法:convert(some_format)
調用manipulate!(:format => some_format)
,進而調用(some_image_object).write("#{some_format}:#{current_path}")
。現在如果傳入的原始圖像是bla.format(format = jpg,png等),current_path
具有.format的擴展名(通過在manipulate!
上的猴子補丁測試)。在RMagick
中,圖像格式轉換的工作方式是使用具有所需擴展名的參數調用write
。那麼,爲什麼上面的jpeg轉換實際發生?如果是這樣,爲什麼PNG轉換失敗?
而且,如果它是有用的,我on Rails的3.0.9和Carrierwave 0.5.6
謝謝!
謝謝,你救了我的夜 –
任何人在看這個答案可以閱讀此:http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – JakeTheSnake