前情提要:php
這幾天我都在實驗Carrierwave這套圖片上傳套件,也順利部署到Heroku架站正式環境了。:)git
接下來我遇到了新的問題:要如何在上傳的時候,讓Carrierwave gem大型size圖片縮成固定大小,讓總體頁面看起來比較美觀呢(xcsjbj)?github
解法很簡單!看了Carrierwave關於image resizing的說明,只要安裝imagemagick和ruby
minimagick就好了。服務器
[注意]文中提到You must have Imagemagick and MiniMagick installed to do image resizing.MiniMagick is a Ruby interface for Imagemagick which is a C program.This is why MiniMagick fails on 'bundle install' without Imagemagick installed.因此咱們的順序是:先裝imagemagick,再裝MiniMagick。app
A. imagemagick測試
首先去imagemagick官網下載適合你操做系統的imagemagick版本。操作系統
在terminal輸入指令convert能夠幫咱們肯定是否有安裝成功,以及目前安裝版本。個人是ImageMagick 6.9.1-0圖片
tingdeMacBook-Air:yelpdemo tingtinghsu$ convertip
Version: ImageMagick 6.9.1-0 Q16 x86_64 2015-03-22 http://www.imagemagick.org
Copyright: Copyright(C)1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
安裝好以後,還要跑brew install imagemagick。
(否則就會像我同樣,測試上傳功能功能時出現錯誤信息!)
參考這篇stackoverflow解法果真身爲新手的好處是我遇到的bug都還有人提問過
裏面說明,安裝libmagickwand-dev後才能跑rmagick gem的功能。
注意,在Mac環境,下brew指令前須要安裝Homebrew,更多說明能夠參考以前的文章
B. minimagick gem
接下來到minimagick的Github頁面,
還記得咱們的Gem三步驟:修改Gemfile加入新的gem;跑bundle install;重啓服務器rails s。
gem「mini_magick」
tingdeMacBook-Air:yelpdemo tingtinghsu$ bundle install
指令bundle info可幫咱們肯定版本。目前個人是mini_magick(4.8.0)
tingdeMacBook-Air:yelpdemo tingtinghsu$ bundle info mini_magick
* mini_magick(4.8.0)
Summary: Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
Homepage: https://github.com/minimagick/minimagick
Path: /Users/tingtinghsu/.rvm/gems/ruby-2.4.2/gems/mini_magick-4.8.0
C.修改image_uploader.rb
接下來就是讓Carrierwave下的MiniMagick開始工做了!
到項目名/app/uploaders/image_uploader.rb開始修改代碼:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick #將註釋消掉
process resize_to_fit: [200,300] #在這裏的`resize_to_fit`是Carrierwave的其中一個方法
end
更多關於CarrieWave的Method列表(mfslwz)
在本機試一下功能是否成功:
圖片總算如我所願縮小了!最後一步就是:git push heroku master把新功能deploy至正式環境。
跟carrierwave套件相處了兩週~就先到這裏啦!接下來會繼續研究更多實用的套件。:)
-全系列完-