Ruby on Rails 2.1 - Hướng dẫn RMagick

Rails cung cấp các ràng buộc với ImageMagickGraphicsMagick , là những thư viện C phổ biến và ổn định. Thư viện RMagick cung cấp cùng một giao diện với ImageMagick và GraphicsMagick, vì vậy bạn sử dụng cái nào không quan trọng.

Bạn có thể làm được RMagickbằng cách cài đặt gen rmagick trên Unix hoặc gem rmagick-win32 trên Windows. Hãy cài đặt nó trên máy Unix như sau:

$ gem install rmagick

Các RMagickmô-đun đi kèm với lớp Magick :: Image , cho phép bạn thay đổi kích thước hình ảnh theo bốn phương pháp khác nhau -

  • thay đổi kích thước (chiều rộng, chiều cao)
  • tỷ lệ (chiều rộng, chiều cao)
  • mẫu (chiều rộng, chiều cao)
  • hình thu nhỏ (chiều rộng, chiều cao)

Tất cả các phương thức này chấp nhận một cặp giá trị số nguyên, tương ứng với chiều rộng và chiều cao tính bằng pixel của hình thu nhỏ mà bạn muốn.

Thí dụ

Đây là một ví dụ sử dụng phương thức resize () để thay đổi kích thước hình ảnh. Nó có tệptmp.jpg và tạo hình thu nhỏ của nó rộng 100 pixel x chiều cao 100 pixel -

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

Dưới đây là các bước để tạo hình thu nhỏ -

  • Ở đây phương thức lớp Image.read nhận tên tệp hình ảnh làm đối số và trả về một mảng các đối tượng Hình ảnh. Bạn nhận được phần tử đầu tiên của mảng đó, rõ ràng là hình ảnh tmp.jpg của chúng tôi .

  • Tiếp theo, chúng tôi đang gọi phương thức resize với các đối số mong muốn, đang tạo hình thu nhỏ.

  • Cuối cùng, chúng tôi đang hướng hình ảnh này đến trình duyệt. Bạn cũng có thể sử dụng phương thức thumb.write ("mythumbnail.jpg") để lưu trữ cục bộ hình ảnh này trên máy của bạn.

Chuyển đổi định dạng hình ảnh

Rất dễ dàng để chuyển đổi một tệp hình ảnh từ định dạng này sang định dạng khác. RMagickxử lý nó rất thông minh. Bạn chỉ có thể đọc trong tệp và ghi nó ra với một phần mở rộng khác.

Thí dụ

Ví dụ sau chuyển đổi tệp JPEG thành tệp 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

Bạn có thể thay đổi hình ảnh sang định dạng dựa trên yêu cầu của bạn như sau:

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