前情提要:
这几天我都在实验Carrierwave这套图片上传套件,也顺利部署到Heroku架站正式环境了。:)
接下来我遇到了新的问题:要如何在上传的时候,让Carrierwave gem大型size图片缩成固定大小,让整体页面看起来比较美观呢(xcsjbj)?
解法很简单!看了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$ convert
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套件相处了两周~就先到这里啦!接下来会继续研究更多实用的套件。:)
-全系列完-