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