- 学习 Ruby on Rails
- Rails 2.1 主页
- Rails 2.1 简介
- 导轨 2.1 安装
- Rails 2.1 框架
- Rails 2.1 目录结构
- Rails 2.1 示例
- Rails 2.1 数据库设置
- Rails 2.1 活动记录
- Rails 2.1 迁移
- Rails 2.1 控制器
- Rails 2.1 视图
- Rails 2.1 布局
- Rails 2.1 脚手架
- Rails 2.1 和 AJAX
- Rails 2.1 上传文件
- Rails 2.1 发送电子邮件
- 高级 Ruby on Rails 2.1
- Rails 2.1 RMagick 指南
- Rails 2.1 基本 HTTP 身份验证
- Rails 2.1 错误处理
- Rails 2.1 路线系统
- Rails 2.1 单元测试
- 高级 Ruby on Rails 2.1
- Rails 2.1 提示与技巧
- 快速参考指南
- 快速参考指南
- Ruby on Rails 2.1 有用资源
- Ruby on Rails 2.1 - 资源
- Ruby on Rails 2.1 - 讨论
Ruby on Rails 2.1 - RMagick 指南
Rails 提供了对ImageMagick和GraphicsMagick的绑定,它们是流行且稳定的 C 库。RMagick 库针对 ImageMagick 和 GraphicsMagick 提供相同的接口,因此您使用哪一个并不重要。
您可以通过在 Unix 上安装 rmagick gen 或在 Windows 上安装 rmagick-win32 gem 来获取RMagick 。让我们将其安装在 Unix 机器上,如下所示 -
$ gem install rmagick
RMagick模块附带了Magick::Image类,它允许您通过四种不同的方法调整图像大小-
- 调整大小(宽度,高度)
- 比例(宽度,高度)
- 样本(宽度,高度)
- 缩略图(宽度、高度)
所有这些方法都接受一对整数值,对应于所需缩略图的宽度和高度(以像素为单位)。
例子
这是一个使用resize()方法调整图像大小的示例。它获取文件tmp.jpg并制作一个 100 像素宽 x 100 像素高的缩略图 -
require 'rubygems'
require 'RMagick'
class ImageController < ApplicationController
def createThubnail
width, height = 100, 100
img = Magick::Image.read('tmp.jpg').first
thumb = img.resize(width, height)
# If you want to save this image use following
# thumb.write("mythumbnail.jpg")
# otherwise send it to the browser as follows
send_data(thumb.to_blob, :disposition => 'inline', :type => 'image/jpg')
end
end
以下是创建缩略图的步骤 -
这里类方法Image.read接收图像文件名作为参数并返回 Image 对象的数组。您获得该数组的第一个元素,这显然是我们的tmp.jpg图像。
接下来,我们使用所需的参数调用resize方法,这将创建缩略图。
最后,我们将此图像定向到浏览器。您还可以使用thumb.write("mythumbnail.jpg")方法将此图像本地存储在您的计算机上。
转换图像格式
将图像文件从一种格式转换为另一种格式非常容易。RMagick处理得非常巧妙。您可以只读入文件并使用不同的扩展名将其写出。
例子
以下示例将 JPEG 文件转换为 GIF 文件 -
require 'rubygems'
require 'RMagick'
class ImageController < ApplicationController
def changeFormat
img = Magick::Image.read('tmp.jpg').first
# If you want to save this image use following
# img.write("mythumbnail.gif")
# otherwise send it to the browser as follows
send_data(img.to_blob, :disposition => 'inline', :type => 'image/gif')
end
end
您可以根据您的要求将图像更改为格式,如下所示 -
img = Magick::Image.read("tmp.png").first
img.write("tmp.jpg") # Converts into JPEG
img.write("tmp.gif") # Converts into GIF
img.write("JPG:tmp") # Converts into JPEG
img.write("GIF:tmp") # Converts into GIF