前情提要:

这几天我都在实验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套件相处了两周~就先到这里啦!接下来会继续研究更多实用的套件。:)

-全系列完-

04-15 15:08