前情提要:
这几天我都在实验Carrierwave这套图片上传套件,也顺利部署到Heroku架站正式环境了。:)
接下来我遇到了新的问题:要如何在上传的时候,让Carrierwave gem大型size图片缩成固定大小,让整体页面看起来比较美观呢?
解法很简单!看了Carrierwave关于image resizing
的说明,只要安装imagemagick和
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。
A. imagemagick
首先去imagemagick官网下载适合你作业系统的imagemagick版本。在terminal输入指令
convert
可以帮我们确定是否有安装成功,以及目前安装版本。我的是ImageMagick 6.9.1-0
tingdeMacBook-Air:yelpdemo tingtinghsu$ convertVersion: ImageMagick 6.9.1-0 Q16 x86_64 2015-03-22 http://www.imagemagick.orgCopyright: Copyright (C) 1999-2015 ImageMagick Studio LLCLicense: 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 / GraphicsMagickHomepage: https://github.com/minimagick/minimagickPath: /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列表
在本机试一下功能是否成功:
图片总算如我所愿缩小了!最后一步就是:git push heroku master
把新功能deploy至正式环境。
跟carrierwave套件相处了两週~就先到这里啦!接下来会继续研究更多实用的套件。:)
-全系列完-
系列文章:
将Ruby on Rails专案部署到Heroku |
活用套件carrierwave gem: (1)在Rails实现图片上传功能 |
活用套件carrierwave gem: (2)利用Amazon S3架设图片伺服器 |
活用套件carrierwave gem: (3)Deploy图片上传功能到Heroku网站 |
活用套件carrierwave gem: (4)使用Imagemagick修改图片大小