[Ting's笔记Day9] 活用套件Carrierwave gem: (4) 使用Imagemagick修改

前情提要:
这几天我都在实验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
(不然就会像我一样,测试上传功能功能时出现错误讯息!)

http://img2.58codes.com/2024/20111177vNOiNwaitw.png

参考这篇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列表

在本机试一下功能是否成功:
http://img2.58codes.com/2024/20111177yC3uCRNnFa.png

图片总算如我所愿缩小了!最后一步就是: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修改图片大小


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章