我正在使用carrierwave 创建缩略图,但我不知道如何使用这个脚本。
mogrify -resize 246x246 -background none -gravity center -extent 246x246 -format png -quality 75 -path thumbs penguins.jpg
这个脚本创建缩略图并且效果很好,但我想在载波版本中使用这个或类似的。
我正在使用carrierwave 创建缩略图,但我不知道如何使用这个脚本。
mogrify -resize 246x246 -background none -gravity center -extent 246x246 -format png -quality 75 -path thumbs penguins.jpg
这个脚本创建缩略图并且效果很好,但我想在载波版本中使用这个或类似的。
有关使用carrierwave 进行图像处理高级配置的文档在这里:
如果您查看该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
在你的 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