>> HOME >> CentOS 4 MENU >> Web上で画像を編集 (ImageMagick)
Web 上で画像を編集したいっ!ってことで ImageMagick を導入します。
ImageMagick を導入することにより、画像を縮小拡大、フォーマット変換など、多彩な編集機能が使えます。
コマンドライン(シェル)からの利用も可能です。
JPEG や PNG と言った画像を動的に作成・編集でき、画像がキレイなのが特徴です。

1. ImageMagick インストール
1 ) ImageMagick インストール
2 ) Perl プラグインのインストール
2. ImageMagick 利用方法(コマンドラインから使う)
1 ) ImageMagick のコマンド
2 ) 画像のフォーマット変換
3 ) 画像のサイズ変更
4 ) 画像の回転
5 ) その他の処理
6 ) 画像の詳細情報を出力
3. ImageMagick 利用方法(Perl から使う)
1 ) 画像のフォーマット変換
2 ) 画像のサイズ変更
3 ) 画像の回転
4 ) その他の処理
5 ) 画像の縦横サイズを取得
1. ImageMagick インストール
1 ) ImageMagick インストール
[root@linux ~]# yum -y install ImageMagick 
Repository dag is listed more than once in the configuration
Setting up Install Process
Setting up repositories
dries                     100% |=========================| 791 kB    00:02
dag                       100% |=========================| 1.1 kB    00:00
update                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for ImageMagick to pack into transaction set.
ImageMagick-6.0.7.1-14.i3 100% |=========================|  42 kB    00:01
---> Package ImageMagick.i386 0:6.0.7.1-14 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ImageMagick             i386       6.0.7.1-14       base              2.4 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 2.4 M
Downloading Packages:
(1/1): ImageMagick-6.0.7. 100% |=========================| 2.4 MB    00:07
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: ImageMagick                  ######################### [1/1]

Installed: ImageMagick.i386 0:6.0.7.1-14
Complete!
2 ) Perl プラグインのインストール
ImageMagickを Perlで使用するためのプラグインをインストールします。
※ インストールしなくても ImageMagickは動作します。必要に応じてインストールして下さい。
[root@linux ~]# yum -y install ImageMagick-perl 
Repository dag is listed more than once in the configuration
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for ImageMagick-perl to pack into transaction set.
ImageMagick-perl-6.0.7.1- 100% |=========================|  13 kB    00:00
---> Package ImageMagick-perl.i386 0:6.0.7.1-14 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ImageMagick-perl        i386       6.0.7.1-14       base               79 k

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 79 k
Downloading Packages:
(1/1): ImageMagick-perl-6 100% |=========================|  79 kB    00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: ImageMagick-perl             ######################### [1/1]

Installed: ImageMagick-perl.i386 0:6.0.7.1-14
Complete!
2. ImageMagick 利用方法(コマンドラインから使う)
1 ) ImageMagick のコマンド
ImageMagick をインストールすると以下のコマンドが使えるようになります。
animate: アニメーション GIF など動く画像をディスプレイ上で確認
compare: 二つの画像を比較
composite: 画像を重ねて合成
conjure: ImageMagick の機能を使えるスクリプト言語の処理系
convert: 画像のフォーマット変換・拡大縮小・フィルタ処理
display: 画像表示
identify: 画像の情報をテキストで表示
import: スクリーンショットを撮る
mogrify: convert と同じだが、処理結果を元の画像ファイルに格納する
montage: 複数の画像を連接
この中でよく使うのは convert, identify でしょう。
2 ) 画像のフォーマット変換
convertは画像のフォーマットを自動的に変換します。下記のように拡張子だけ変更すれば、自動的に変換してくれます。
(下記は JPEG 画像から PNG 画像への変換例)
[root@linux ~]# convert abc.jpg abc.png 
3 ) 画像のサイズ変更
convert は geometry オプションにより、画像のサイズを変更します。
(下記は、サイズ640(横)×480(縦)の画像を、320×240 に縮小(縮小率50%)します。)

方法 1 :
[root@linux ~]# convert -geometry 320x240 abc.org.jpg abc.jpg 
方法 2 :
[root@linux ~]# convert -geometry 50%x50% abc.org.jpg abc.jpg 
方法 3 : 縦、横の縮小比率が同じであれば、下記の方法でも可能。
[root@linux ~]# convert -geometry 50% abc.org.jpg abc.jpg 
4 ) 画像の回転
convert は rotate オプションにより、画像に任意の回転角度を与えることができます。
時計回りに90度回転 :
[root@linux ~]# convert -rotate 90 abc.org.jpg abc.jpg 
一方、上下反転には flipオプションを使用します。
上下反転 :
[root@linux ~]# convert -flip abc.org.jpg abc.jpg 
また、左右反転には flopオプションを使用します。
左右反転 :
[root@linux ~]# convert -flop abc.org.jpg abc.jpg 
5 ) その他の処理
枠を付けて出力 : border
[root@linux ~]# convert -border 10x10 -bordercolor blue abc.org.jpg abc.jpg 
中間値 : median
[root@linux ~]# convert -median 10 abc.org.jpg abc.jpg 
ぼかし : blur
[root@linux ~]# convert -blur 10 abc.org.jpg abc.jpg 
エッジ抽出 : edge
[root@linux ~]# convert -edge 10 abc.org.jpg abc.jpg 
エンボス : emboss
[root@linux ~]# convert -emboss 10 abc.org.jpg abc.jpg 
間引き : sample
[root@linux ~]# convert -sample 10% abc.org.jpg abc.jpg 
6 ) 画像の詳細情報を出力
[root@linux ~]# identify -verbose abc.png 
3. ImageMagick 利用方法(Perl から使う)(※ Perl プラグインのインストールが必要です)
1 ) 画像のフォーマット変換
下記は JPEG 画像から PNG 画像への変換例
#!/usr/local/bin/perl

use Image::Magick;

$i = Image::Magick->new;
$i->Read('abc.jpg');
print "Content-type: image/png\n\n";
binmode(STDOUT);
$i->Write("png:-");
exit;
2 ) 画像のサイズ変更
Scaleは、縦横のピクセルを与え縮小拡大します。
下記は、画像を、320×240に縮小します。
#!/usr/local/bin/perl

use Image::Magick;

$newwidth = 320;
$newheight = 240;
$i = Image::Magick->new;
$i->Read('abc.jpg');
$i->Scale(geometry=>geometry, width=>$newwidth, height=>$newheight);
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
Transformは、同じ比率で画像を縮小拡大します。
下記は、画像を、幅320に、同じ比率で縦も縮小します。
#!/usr/local/bin/perl

use Image::Magick;

$newwidth = 120;
$i = Image::Magick->new;
$i->Read('abc.jpg');
$i = $i->Transform(geometry=>$newwidth);
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
3 ) 画像の回転
時計回りに90度回転 :
#!/usr/local/bin/perl

# degrees で指定された角度で画像を回転。
# degrees は、-360 から 360 までの整数で、マイナスは左回りを指す。
# crop に 1 を指定すると、元の画像の大きさを変えない。
# sharpen に 1 を指定すると、同時にシャープフィルタを付加。

use Image::Magick;

$i = Image::Magick->new;
$i->Read('abc.jpg');
$i->Set(bordercolor=>'#FFFFFF');
$i->Rotate(degrees=>90,crop=>0,sharpen=>1);
$i->Trim();
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
上下反転 :
#!/usr/local/bin/perl

use Image::Magick;

$newwidth = 120;
$i = Image::Magick->new;
$i->Read('abc.gif');
$i->Flip();
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
左右反転 :
#!/usr/local/bin/perl

use Image::Magick;

$i = Image::Magick->new;
$i->Read('abc.gif');
$i->Flop();
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
4 ) その他の処理
枠を付けて出力 :
#!/usr/local/bin/perl

# Width、height は、枠の幅と高さで、inner とouter は、立体表示させる幅と高さをピクセルで指定

use Image::Magick;

$i = Image::Magick->new;
$i->Read('abc.gif');
$i->Frame(geometry=>geometry,width=>6,height=>6,inner=>2,outer=>2,color=>'#50FF50');
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
ぼかし :
#!/usr/local/bin/perl

#  Blurは、指定したfactor値(0-99.9)で画像をぼかす

use Image::Magick;

$i = Image::Magick->new;
$i->Read('Sample');
$i->Blur(factor=>5);
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
エッジ抽出 :
#!/usr/local/bin/perl

use Image::Magick;

$newwidth = 120;
$i = Image::Magick->new;
$i->Read('Sample.gif');
$i->Edge(factor=>0.1);
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
エンボス :
#!/usr/local/bin/perl

use Image::Magick;

$newwidth = 120;
$i = Image::Magick->new;
$i->Read('Sample.gif');
$i->Emboss();
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;
5 ) 画像の縦横サイズを取得
#!/usr/local/bin/perl

use Image::Magick;

$i = Image::Magick->new;
$i->Read('Sample.gif');
$pic_width = $i->Get('width');  # 横幅取得
$pic_height = $i->Get('height'); # 縦幅取得
print "Content-type: text/html\n\n";
print "横幅 = $pic_width\n";
print "縦幅 = $pic_height\n";
exit;