如何使用CarrierWave :: RMagick编辑现有图像(auto_orient!)?

时间:2018-08-25 01:38:56

标签: ruby-on-rails carrierwave rmagick

我有:

class Painting < ActiveRecord::Base
  mount_uploader :image, ImageUploader
  ...
end

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file
  process :fix_exif_rotation


  def fix_exif_rotation
    manipulate! do |img|
      img.auto_orient!
      img = yield(img) if block_given?
      img
    end
  end

end

这在新上传的图像上可以正常工作,但是我希望脚本在每个已存在的图像上执行auto_orient!,因为我只添加了fix_exif_rotation代码,而旧图像有方向问题。...

我尝试:

Painting.first.image.fix_exif_rotation
  

CarrierWave :: ProcessingError(无法通过rmagick进行操作,也许它不是图像?)

Painting.first.image.auto_orient!
  

NoMethodError(#的未定义方法“ auto_orient!”)

那有什么好的方法呢?

1 个答案:

答案 0 :(得分:0)

尝试使用recreate_versions!方法https://github.com/carrierwaveuploader/carrierwave#recreating-versions

Painting.first.image.recreate_versions!

我不确定它是否仅适用于额外版本或原始版本。