Ruby on Rails 2.1 - RMagick 指南



Rails 提供了与ImageMagickGraphicsMagick 的绑定,它们是流行且稳定的 C 库。RMagick 库针对 ImageMagick 和 GraphicsMagick 提供相同的接口,因此使用哪个库都没有关系。

您可以通过在 Unix 上安装 rmagick gem 或在 Windows 上安装 rmagick-win32 gem 来获得RMagick。让我们按照以下步骤在 Unix 机器上安装它:

$ gem install rmagick

RMagick 模块附带了Magick::Image 类,它允许您通过四种不同的方法调整图像大小:

  • resize(宽度, 高度)
  • scale(宽度, 高度)
  • sample(宽度, 高度)
  • thumbnail(宽度, 高度)

所有这些方法都接受一对整数值,分别对应于所需缩略图的像素宽度和高度。

示例

这是一个使用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)
	   
      # 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
广告