前情提要:

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

-全系列完-

[Ting's笔记Day9]活用套件Carrierwave gem:(4)使用Imagemagick修改图片大小的更多相关文章

  1. [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站

    前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...

  2. [Ting's笔记Day7]活用套件carrierwave gem:(2)利用Amazon S3架设图片服务器

    来到第7篇了!培养写作习惯真是不容易:) 在我的上一篇文章活用套件carrierwave gem:(1)在Rails实现图片上传功能,上传图片功能已经完成啦!但是目前图片仅能上传在自己的本地文件夹内孤 ...

  3. [Ting's笔记Day6]活用套件carrierwave gem:(1)在Rails实现图片上传功能

    carrierwave是一款经典的图片上传套件,本篇的目标是先在本地端(development)的rails项目试成功gem. (预计中集的进度会练习怎么利用Amazone S3架设图片上传Host, ...

  4. [Ting's笔记Day4]将Ruby on Rails项目部署到Heroku

    今天想笔记的是把自己写的Ruby on Rails项目部署(Deploy)到Heroku! Heroku是Salesforce公司旗下的云端服务商,支持多种程序语言像是Ruby,PHP,Python等 ...

  5. [Ting's笔记Day1] Ruby on Rails练习- MacOS安装篇

    千里之行,始于足下.喊了要学Ruby on Rails好久,今天终于要来迈向第一步:安装了! 一开始学习新的事物,主要就是跟着这个网页所说的步骤step by step. 很喜欢这个网页的设计流程,透 ...

  6. python学习笔记1-python相关应用套件

    完整的数据分析套件 统计科学计算 Numpy,Scipy,statsmodels 深度学习 TensorFlow,MXNET 结构化数据处理与分析 Pandas 大数据处理 PySpark 数据探索编 ...

  7. [Ting's笔记Day5]在部署到Heroku之前,将Rails项目从SQLite设定为PostgreSQL

    前情提要: Paas(平台及服务)公司Heroku是个可以把我们写好的App部署到网际网络的好地方.而本篇是我从自己的上一篇文章:将Ruby on Rails项目部署到Heroku遇到的问题,当时困扰 ...

  8. [Ting's笔记Day3]解决Git常见错误non-fast-forward问题

    写文章最难的部分,是找题材! 所以最近每次遇到bug或错误都挺兴奋开心(zflwx)的,因为又可以写笔记了 也可以记录新手学习之路上遇到的常见问题,提供其他新手参考. 最近学Udemy平台Ruby学习 ...

  9. [Ting's笔记Day2]在Github用Jekyll创建自己的blog

    昨天工程师在我们共同的群组分享他的blog,他提到是使用Jekyll(一个简单静态blog网站生成器)架在github上的. 于是好奇的我决定照着关键字来搜寻一下,如法炮制做一个出来. 也可以放一份到 ...

随机推荐

  1. C语言之二维数组与指针

    二维数组: ][]; 二维数组实质上也就是一维数组,a[2][3]可看做一个2个元素的一维数组,这2个元素又是另一个数组,在内存中,它的排布如下: #include "stdio.h&quo ...

  2. C语言之一维数组与指针

    一维数组: 假如有一维数组如下: ]; 该数组有3个元素,数据类型为char型,地址空间如下. 如果想访问数据,直接使用a[0].a[1].a[2]取出相应地址空间的值即可 一级指针: 指针即地址,c ...

  3. Elasticsearch -- 索引管理

    1.#获取当前索引 # curl -u elastic:changeme 'localhost:9200/_cat/indices?v' 2. #删除指定索引    # curl -XDELETE - ...

  4. Windows Server 2008 R2 /2012 修改密码策略

    今天建了域环境,在添加新用户的时候,发现用简单的密码时域安全策略提示密码复杂度不够,于是我就想在域安全策略里面把密码复杂度降低一点. 问题:    在“管理工具 >> 本地安全策略 > ...

  5. 运用scrollPic插件的实例

    html页面部分 <!doctype html> <html lang="en"> <head> <meta charset=" ...

  6. APS技术中的多目标规划问题

    在进行APS(高级计划与排程)系统开发时,绝大多数情况下是需要考虑多目标的.但面对多目标问题进行规划求解时,我们往往极容易因处理方法不当,而影响输出结果,令结果与用户期望产生较大差别.事实上很多时候用 ...

  7. 联想T470笔记本GPT改MBR分区

    联想T470笔记本GPT改MBR分区 7000多元买的,这个笔记本配置还可以,就是感觉特别卡顿,于是想重做WIN7系统,为了方便激活,想把GPT分区改成MBR分区. 进入微PE1.2,用傲梅分区助手删 ...

  8. version `GLIBC_2.17' not found 解决方法

    1.先查看是哪个函数用的是GLIBC_2.17 root@emb-pc:/home/emb/temp# nm lib61850.so | grep GLIBC_2.17 U clock_gettime ...

  9. js中的数据类型、以及浅拷贝和深拷贝

    一.js中的数据类型 1.基本类型(值类型):Undefined.Boolean.String.Number.Symbol 2.引用类型:函数.数组.对象.null.new Number(10)都是对 ...

  10. c#调用python代码

    c#调用python的方法比较多,比如ironpython,尽管不用安装python环境,可是不兼容python众多的包,也只更新到了python2,通过创建python进程这种方式可以很好的解决兼容 ...