[Ting's筆記Day9]活用套件Carrierwave gem:(4)使用Imagemagick修改圖片大小

前情提要: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套件相處了兩週~就先到這裏啦!接下來會繼續研究更多實用的套件。:)

-全系列完-

相關文章
相關標籤/搜索