Ruby on Rails 2.1-RMagick 가이드

Rails는 인기 있고 안정적인 C 라이브러리 인 ImageMagickGraphicsMagick에 대한 바인딩을 제공합니다 . RMagick 라이브러리는 ImageMagick 및 GraphicsMagick에 대해 동일한 인터페이스를 제공하므로 어떤 것을 사용하는지는 중요하지 않습니다.

당신은 얻을 수 있습니다 RMagickUnix에 rmagick gen을, Windows에 rmagick-win32 gem을 설치합니다. 다음과 같이 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 이미지입니다.

  • 다음으로 메소드를 호출합니다. 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