1

我正在使用carrierwave 创建缩略图,但我不知道如何使用这个脚本。

mogrify -resize 246x246 -background none -gravity center -extent 246x246 -format png -quality 75 -path thumbs penguins.jpg

这个脚本创建缩略图并且效果很好,但我想在载波版本中使用这个或类似的。

4

2 回答 2

3

有关使用carrierwave 进行图像处理高级配置的文档在这里:

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Efficiently-converting-image-formats#full-example

如果您查看该def mogrify部分,您会看到img.format("png") do |c|块中是传递图像处理选项的位置。

该变量c实际上是 的一个实例MiniMagick,它是 的一个薄包装器mogrify

https://github.com/minimagick/minimagick/

完整的 APIMiniMagick并不完全在那里,但如果你深入研究源代码,你会发现他们有一个他们在这里使用的所有可能方法的列表:

https://github.com/minimagick/minimagick/blob/master/lib/mini_magick.rb#L39

这些都在下面定义:

https://github.com/minimagick/minimagick/blob/master/lib/mini_magick.rb#L456

我建议将您想要的选项添加到您自己的上传器:

 def mogrify(options = {})
    manipulate! do |img|
      img.format("png") do |c|
        # Add other options here:

        c.gravity     options[:gravity]
        c.background  options[:background]
        c.extend      options[:extend]
        c.quality     options[:quality]

        # Original options follow:

        c.fuzz        "3%"
        c.trim
        c.rotate      "#{options[:rotate]}" if options.has_key?(:rotate)
        c.resize      "#{options[:resolution]}>" if options.has_key?(:resolution)
        c.resize      "#{options[:resolution]}<" if options.has_key?(:resolution)
        c.push        '+profile'
        c.+           "!xmp,*"
        c.profile     "#{Rails.root}/lib/color_profiles/sRGB_v4_ICC_preference_displayclass.icc"
        c.colorspace  "sRGB"
      end
      img
    end
  end
于 2013-09-30T13:12:37.403 回答
1

在你的 app/uploaders/image_uploader.rb

做这样的事情

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  storage :file

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

  version :thumb do
    process :resize_to_limit => [246, 246]
  end
end

看看这个 rails cast 253-carrierwave-file-uploads

于 2013-09-30T14:15:53.833 回答