我在用carrierwave制作缩略图,但我不知道怎么用这个脚本。

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

这个脚本创建缩略图和工作良好,但我想使用这个或类似的carrierwave版本。

最佳答案

有关使用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的一个薄包装。
https://github.com/minimagick/minimagick/
mogrify的完整API还不完全存在,但是如果您深入了解源代码,您会发现它们在这里列出了所有可能使用的方法:
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

10-01 03:01