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(width, height)
- scale(width, height)
- sample(width, height)
- thumbnail(width, height)
所有这些方法都接受一对整数值,对应于您想要的缩略图的宽度和高度(以像素为单位)。
示例
这是一个使用 resize() 方法调整图像大小的示例。它获取文件 tmp.jpg 并制作其宽 100 像素、高 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) # 如果你想保存此图像,请使用以下命令 # thumb.write("mythumbnail.jpg") # 否则,按如下方式将其发送到浏览器 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 # 如果你想保存此图像,请使用以下命令 # img.write("mythumbnail.gif") # 否则,按如下方式将其发送到浏览器 send_data(img.to_blob, :disposition => 'inline', :type => 'image/gif') end end
您可以根据需要将图像更改为以下格式 −
img = Magick::Image.read("tmp.png").first img.write("tmp.jpg") # 转换为 JPEG img.write("tmp.gif") # 转换为 GIF img.write("JPG:tmp") # 转换为 JPEG img.write("GIF:tmp") # 转换为 GIF