不同版本的不同文件扩展名

时间:2011-03-13 20:22:25

标签: ruby carrierwave

我正在使用carrierwave上传图片。我需要我的主要图像版本 保持原始格式,但要转换的其他版本 到gif。

目前我正在做这样的事情:

 def filename
   change_ext_to_gif(super)
 end

 def change_ext_to_gif(ext)
   ext.chomp(File.extname(ext)) + ".gif"
 end

 version :preview do
   process :resize_to_fill => [60, 60]
   process :convert => "gif"
 end

 version :full do
   process :resize_to_limit => [320, 320]
   process :convert => "gif"
 end

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
 end

当然,这也会改变我原始文件的扩展名。是 有什么方法可以解决这个问题?我想我需要覆盖一些方法 在版本的块中。但我无法弄明白(我 尝试覆盖文件名和网址这有助于但阻止版本 文件被删除)。

1 个答案:

答案 0 :(得分:6)

您可以像这样对每个版本使用的文件名进行ovvierde:

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
   def full_filename(for_file = model.logo.file)
     "fiename here"
   end
 end

所以只需保留原始文件名,然后按版本更改。维基上还有其他例子:

https://github.com/jnicklas/carrierwave/wiki/How-To%3A-Move-version-name-to-end-of-filename%2C-instead-of-front