2013-09-30 32 views
1

我正在使用carrierwave创建缩略图,但我不知道-i可以如何使用此脚本。如何使用carrierwave和imagemagick脚本创建缩略图?

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

此脚本创建缩略图,效果不错,但我想在carrierwave版本中使用此功能或类似功能。

回答

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/

MiniMagick完整的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 
1
在您的应用程序/上传/ 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 

看看这个轨道演员253-carrierwave-file-uploads

+0

Thx,但resize_to_limit不完全是脚本在做什么,因为脚本会制作一个新的246x246图像,带有透明酒泉nd然后调整图像大小。 – turbod