CentOS7 - RMagick(Ruby)で画像ファイルをリサイズする

作業環境

# hostnamectl status
   Static hostname: golang.local
         Icon name: computer-vm
           Chassis: vm
~~~
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.2.2.el7.x86_64
      Architecture: x86-64
RMagick: 2.16.0

目次

1.パッケージを追加
2.RMagickをインストール
3.RMagickの利用方法

1.パッケージを追加

gemを利用する際、必要になるであろうパッケージを追加。

yum install -y gcc gcc-c++ make

ImageMagickを追加。

yum install -y ImageMagick ImageMagick-devel

2.RMagickをインストール

gemコマンドで RMagickをインストールする前にgem自体をアップデート。

gem update --system

RMagickをインストール。

gem install rmagick

3.RMagickの利用方法

サンプルコードを実行するためにサンプル画像をダウンロード。

wget https://dlmarket-jp.s3.amazonaws.com/images/consignors/98/9871/test.jpg

画像をリサイズするサンプルコードをviコマンドで作成。

vi resize.rb

resize.rbに下記コードを貼り付け。

require 'fileutils'
require 'rmagick'

if ARGV[0] == nil
  puts "Missing filename"
  exit
else
  IMAGE = ARGV[0]
end

def info(img)
  puts "FILENAME  : #{img.filename}"        # ファイル名
  puts "FORMAT    : #{img.format}"          # フォーマット
  puts "HEIGHT    : #{img.rows} px"         # 高さ
  puts "WIDTH     : #{img.columns} px"      # 幅
  puts "CLASSTYPE : #{img.class_type}"      # クラスタイプ
  puts "DEPTH     : #{img.depth} bits/px"   # 深さ
  puts "COLORS    : #{img.number_colors}"   # 色
  puts "FILESIZE  : #{img.filesize} bytes"  # ファイルサイズ
  puts ""
end

original = Magick::Image.read(IMAGE).first
info(original)

width, height = 100, 100
image = original.resize(width, height)
image.write('result.jpg')
info(image)

サンプルコードを実行

下記コマンドを実行すると引数で渡した画像ファイルが 100 x 100 にリサイズされて、result.jpgという名前で保存されます。

ruby resize.rb test.jpg

出力結果

FILENAME  : test.jpg
FORMAT    : JPEG
HEIGHT    : 500 px
WIDTH     : 500 px
CLASSTYPE : DirectClass
DEPTH     : 8 bits/px
COLORS    : 1826
FILESIZE  : 26892 bytes

FILENAME  : result.jpg
FORMAT    : JPEG
HEIGHT    : 100 px
WIDTH     : 100 px
CLASSTYPE : DirectClass
DEPTH     : 16 bits/px
COLORS    : 708
FILESIZE  : 15682 bytes

参考サイト:Ruby - RMagick で画像情報取得!