>> HOME >> FC5 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 
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/3]
updates                                                              [2/3]
extras                                                               [3/3]
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.2.5.4-4.2.1 100% |=========================|  72 kB    00:00
---> Package ImageMagick.i386 0:6.2.5.4-4.2.1.fc5.3 set to be updated
--> Running transaction check
--> Processing Dependency: libgs.so.8 for package: ImageMagick
--> Processing Dependency: libwmflite-0.2.so.7 for package: ImageMagick
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for ghostscript to pack into transaction set.
ghostscript-8.15.2-1.1.i3 100% |=========================| 140 kB    00:00
---> Package ghostscript.i386 0:8.15.2-1.1 set to be updated
---> Downloading header for libwmf to pack into transaction set.
libwmf-0.2.8.4-4.2.i386.r 100% |=========================|  10 kB    00:00
---> Package libwmf.i386 0:0.2.8.4-4.2 set to be updated
--> Running transaction check
--> Processing Dependency: urw-fonts >= 1.1 for package: ghostscript
--> Processing Dependency: ghostscript-fonts for package: ghostscript
--> Processing Dependency: libcups.so.2 for package: ghostscript
--> Processing Dependency: libcupsimage.so.2 for package: ghostscript
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for urw-fonts to pack into transaction set.
urw-fonts-2.3-6.1.noarch. 100% |=========================|  18 kB    00:00
---> Package urw-fonts.noarch 0:2.3-6.1 set to be updated
---> Downloading header for ghostscript-fonts to pack into transaction set.
ghostscript-fonts-5.50-13 100% |=========================|  10 kB    00:00
---> Package ghostscript-fonts.noarch 0:5.50-13.1 set to be updated
---> Downloading header for cups-libs to pack into transaction set.
cups-libs-1.2.1-1.7.i386. 100% |=========================|  31 kB    00:00
---> Package cups-libs.i386 1:1.2.1-1.7 set to be updated
--> Running transaction check
--> Processing Dependency: libgnutls.so.12 for package: cups-libs
--> Processing Dependency: libgnutls.so.12(GNUTLS_1_2) for package: cups-libs
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for gnutls to pack into transaction set.
gnutls-1.2.10-1.i386.rpm  100% |=========================| 5.6 kB    00:00
---> Package gnutls.i386 0:1.2.10-1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ImageMagick             i386       6.2.5.4-4.2.1.fc5.3  updates           3.1 M
Installing for dependencies:
 cups-libs               i386       1:1.2.1-1.7      updates           172 k
 ghostscript             i386       8.15.2-1.1       updates           8.6 M
 ghostscript-fonts       noarch     5.50-13.1        core              800 k
 gnutls                  i386       1.2.10-1         core              332 k
 libwmf                  i386       0.2.8.4-4.2      core              822 k
 urw-fonts               noarch     2.3-6.1          core              4.5 M

Transaction Summary
=============================================================================
Install      7 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 18 M
Downloading Packages:
(1/7): gnutls-1.2.10-1.i3 100% |=========================| 332 kB    00:01
(2/7): ghostscript-8.15.2 100% |=========================| 8.6 MB    00:30
(3/7): urw-fonts-2.3-6.1. 100% |=========================| 4.5 MB    00:17
(4/7): libwmf-0.2.8.4-4.2 100% |=========================| 822 kB    00:02
(5/7): ghostscript-fonts- 100% |=========================| 800 kB    00:02
(6/7): cups-libs-1.2.1-1. 100% |=========================| 172 kB    00:00
(7/7): ImageMagick-6.2.5. 100% |=========================| 3.1 MB    00:11
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: ghostscript-fonts            ######################### [1/7]
  Installing: libwmf                       ######################### [2/7]
  Installing: urw-fonts                    ######################### [3/7]
  Installing: gnutls                       ######################### [4/7]
  Installing: cups-libs                    ######################### [5/7]
  Installing: ghostscript                  ######################### [6/7]
  Installing: ImageMagick                  ######################### [7/7]

Installed: ImageMagick.i386 0:6.2.5.4-4.2.1.fc5.3
Dependency Installed: cups-libs.i386 1:1.2.1-1.7 ghostscript.i386 0:8.15.2-1.1 ghostscript-fonts.noarch
 0:5.50-13.1 gnutls.i386 0:1.2.10-1 libwmf.i386 0:0.2.8.4-4.2 urw-fonts.noarch 0:2.3-6.1
Complete!
2 ) Perl プラグインのインストール
ImageMagickを Perlで使用するためのプラグインをインストールします。
※ インストールしなくても ImageMagickは動作します。必要に応じてインストールして下さい。
[root@linux ~]# yum -y install ImageMagick-perl 
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;