CarrierWave没有调整大小/ Minimagick

时间:2014-07-14 15:47:19

标签: ruby-on-rails imagemagick carrierwave minimagick

我无法通过此CarrierWave上传程序来处理图像并调整我想要的大小。

最初使用此图像创建图像。

class Screenshot
    include Sidekiq::Worker

    def perform(link_id)
        link = Link.find(link_id)
        file = Tempfile.new(["template_#{link.id.to_s}", '.jpg'], 'tmp', :encoding => 'ascii-8bit')
        file.write(IMGKit.new(link.given_url, #quality: 50, width: 300).to_img(:jpg))
                                     :quality => 50, 
                                    :width => 300,
                                    :height => 300,
                                    "crop-w" => 300,
                                    "crop-h" => 300,
                                    "disable-smart-width" => true,
                                    "zoom" => 0.35).to_img(:jpg))
        file.flush
        link.snapshot = file
        link.save
        file.unlink
    end

end

我无法正常工作,所以我想我只是在上传器中调整大小。然后我按照以下方式修改了上传器:

class SnapshotUploader < CarrierWave::Uploader::Base
    include CarrierWave::MiniMagick

  storage :file
  storage :fog
  process :convert_it

  def convert_it
    manipulate! do |img|
        img.resize '300x300'
        img
    end
  end

  def convert_it2
    resize_to_limit [300,300]
  end

  def convert_it3
    resize_to_fit [300,-1]
  end

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def cache_dir
    "#{Rails.root}/tmp/uploads"
  end
end

这也不起作用。我已经尝试了每种转换方法,以及直接

process :resize_to_limit [300,300]

创建图像。无论高度如何,似乎现在总是处于600宽度。

图像上传到AWS S3。

我安装了Imagemagick,并使用自制的--disable-openmp。我可以运行mogrify并从命令行转换。

我可以调整图像大小并使用MiniMagick将其保存在rails控制台中而不会出现问题。

我确保CarrierWave初始化程序的config.enable_processing = true。

我在控制台或sidekiq终端窗口中看不到任何错误消息。

我是新手,所以我很难接受其他尝试。为什么我的图片没有调整到我要求的尺寸?

编辑:600宽度来自IMGKit,这意味着我仍然没有载波实际处理图像。

1 个答案:

答案 0 :(得分:0)

嗯,每次我更改代码时,Sidekiq都没有重新启动。

我不知道你需要这样做,但据我所知,上传者不使用sidekiq进行上传,所以我不清楚为什么这是副作用。

无论如何,每次我进行代码更改时停止sidekiq都会导致这种情况发生。

我还发现了宝石Foreman帮助开始/停止所有服务。

如果有人能向我解释为什么Sidekiq干扰了这个让我知道。 Sidekiq负责制作图像,并正在创建图像。上传过程中没有发生调整大小。