PHPがWebプログラミング言語として業界標準になっています(と思っています)が、従来のcgi(Perl)で記載されたページもまだまだ盛んです。
そんな中、Perlで画像操作を行う際にPerlMagick(Image::Magick)をWindowsローカル環境でデバッグする必要がありましたのでPerlMagick動作までの作業を記載します。
一般にPerlと言えばActiveStateのActivePerlを思い浮かべますが今回はこちらではなくStrawberryPerlを利用します。
理由はActivePerlではPPM(Perl Package Manager)やCPAN(Comprehensive Perl Archive Network)からImage::Magickの導入ができなかったからです(力不足も否めませんが…)。
StrawberryPerlではPPMから導入できましたので簡単に紹介します。
- インストール
ではStrawberryPerlのインストールから始めます。
サイト(http://strawberryperl.com/)から環境にあった最新版をダウンロードしましょう。
2016年1月20日現在では「5.22.1.2」が最新でした。では、早速インストーラ(strawberry-perl-5.22.1.2-64bit.msi 注:私の環境は64bitです)を起動します。 - PerlMagick導入
コマンドプロンプトからPPMを起動します。
PPMのプロンプトがきたら「install Image::Magick」を実行します。c:\>cd Strawberry\perl\bin c:\Strawberry\perl\bin>ppm PPM interactive shell (11.11_03) - type 'help' for available commands. PPM>install Image::Magick Install package 'Image-Magick?' (y/N): y Installing package 'Image-Magick'... ~中略~ Installing C:\STRAWB~1\perl\site\lib\Image\im_xml\type.xml cannot remove directory for C:\Users\(user name)\.ppm/Image-Magick-6476: Permission denied at C:/Strawberry/perl/vendor/lib/PPM.pm line 490. PPM>quit Quit! c:\Strawberry\perl\bin>
PPMのプロンプトが返ってきたらインストール終了です。
最後にエラーが出ますが動作には影響ありません。 - httpサーバーの起動
Apacheでもよかったのですが、手っ取り早く確認するためにANHTTPDを利用します。
公式の配布は終了しているのでこちらのサイトのダウンロードリンクから取得します。ダウンロード対象は「http://ratan.dyndns.info/httpd.zip」です。
解凍すると早速利用可能になりますので、解凍フォルダ内にあるhttpd.exeを実行します。
起動するとWindwosの通知領域にアイコンが表示されますので
右クリックのコンテキストメニューからオプション一般を選びます。
- httpサーバーの設定
- ドキュメントルート
HTTPサーバーが管理するルートフォルダを指定します。
例では「c:\homep」としています。 - ポート番号
特に触る必要もありませんが80番を既に利用している方は他のポート番号を指定してください。
- .pl,.cgi動作の設定
拡張子「.pl,.cgi」を選択すると編集ボタンが有効になりますので、編集ボタンを押します。
こちらでは実行プログラムにStrawberryPerlを指定します。標準インストールであれば「C:\Strawberry\perl\bin\perl」になります。「C:\Strawberry\perl\bin\perl.exe」と記載してもOKです。
チェックボックスは任意ですが、とりあえず動かしたい方は上記の通り指定してみてください。 - 変更の適用
実行プログラムの内容、オプションの内容をOKボタン もしくは 適用ボタンで確定します。変更が適用されるとhttpサーバーが再起動し、変更内容が反映されます。
- ドキュメントルート
- Image::Magickの確認
テスト用cgi(c:\homep\test.cgi)を作成します。
use Image::Magick; # print "Content-type:text/plain\n\n"; print "CGIのテスト"; $filename = "./18081766_624.v1453162292.jpg"; #ファイル名(フォト蔵さんのCC-BYの画像を利用) my $image = Image::Magick->new; $image->Read("$filename"); print ("Content-type: image/jpeg\n\n"); #画像ヘッダー(jpeg用) binmode STDOUT; $image->Write("jpeg:-"); print "\n\n"; undef $image; exit();
cgiを作成したら早速ブラウザからアクセスします。ブラウザのアドレスバーに「localhost/test.cgi」と入力してページを開きます(ブラウザに表示されている画像はCC-BYによってライセンスされています)。
クリエイティブ・コモンズ(表示) - 終わりに
比較的簡単にImage::Magickの利用ができたかと思います。
ANHTTPDはレジストリを触っていないので不要の場合は、httpサーバー停止後にフォルダごと削除で大丈夫です。StrawberryPerlはコントロールパネルのプログラムの削除からどうぞ。