5

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

もちろん、これにより元のファイルの拡張子も変更されます。これを解決する方法はありますか?バージョンのブロックでいくつかのメソッドをオーバーライドする必要があると思います。しかし、私はそれらを理解することができませんでした(ファイル名とURLを上書きしようとしましたが、これは役に立ちますが、バージョンのファイルが削除されるのを防ぎます)。

4

1 に答える 1

6

次のように、バージョンごとに使用されるファイル名を確認できます。

 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

于 2011-08-17T11:14:58.450 に答える