我正在使用carrierwave創建縮略圖,但我不知道-i可以如何使用此腳本。如何使用carrierwave和imagemagick腳本創建縮略圖?
mogrify -resize 246x246 -background none -gravity center -extent 246x246 -format png -quality 75 -path thumbs penguins.jpg
此腳本創建縮略圖,效果不錯,但我想在carrierwave版本中使用此功能或類似功能。
我正在使用carrierwave創建縮略圖,但我不知道-i可以如何使用此腳本。如何使用carrierwave和imagemagick腳本創建縮略圖?
mogrify -resize 246x246 -background none -gravity center -extent 246x246 -format png -quality 75 -path thumbs penguins.jpg
此腳本創建縮略圖,效果不錯,但我想在carrierwave版本中使用此功能或類似功能。
做與carrierwave圖像處理的高級配置的文檔是在這裏:
如果你看一下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
做這樣的事情
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
Thx,但resize_to_limit不完全是腳本在做什麼,因爲腳本會製作一個新的246x246圖像,帶有透明酒泉nd然後調整圖像大小。 – turbod