📜  Ruby on Rails 2.1-RMagick指南

📅  最后修改于: 2020-10-20 05:20:03             🧑  作者: Mango


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

您可以通过在Unix上安装rmagick gen或在Windows上安装rmagick-win32 gem来获得RMagick 。让我们将其安装在Unix机器上,如下所示:

$ gem install rmagick

RMagick模块与Magick :: Image类一起提供,它使您可以通过四种不同的方法调整图像的大小-

  • 调整大小(宽度,高度)
  • 规模(宽度,高度)
  • 样品(宽,高)
  • 缩略图(宽度,高度)

所有这些方法都接受一对整数值,该值对应于所需缩略图的宽度和高度(以像素为单位)。

这是一个使用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图像。

  • 接下来,我们使用所需的参数调用方法调整大小,这将创建一个缩略图。

  • 最后,我们将此图像定向到浏览器。您也可以使用方法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