Проблема с Carrierwave: convert

Я бы хотел, чтобы 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)!

Идеи?

Это может быть бесполезно, но я считаю метод convert в Carrierwave сам по себе подозрительным: convert (some_format) вызывает ] манипулировать! (: format => some_format) , который, в свою очередь, вызывает (some_image_object) .write ("# {some_format}: # {current_path}") . Теперь, если исходное изображение передано в формате bla.format (format = jpg, png и т. Д.), current_path with имеют расширение .format (проверено с помощью патча обезьяны на манипулировать! ]).А преобразование формата изображения работает в RMagick путем вызова write с аргументом, имеющим желаемое расширение. Так почему же на самом деле произошло преобразование jpeg, описанное выше? И если да, то почему конвертация png не удалась?

Кроме того, если это полезно, я использую Rails 3.0.9 и Carrierwave 0.5.6

Спасибо!

6
задан tdp2110 3 November 2011 в 16:47
поделиться