Perl

PerlMagick(Image::Magick)をWindowsで利用する

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から導入できましたので簡単に紹介します。

  1. インストール

    ではStrawberryPerlのインストールから始めます。
    サイト(http://strawberryperl.com/)から環境にあった最新版をダウンロードしましょう。
    2016年1月20日現在では「5.22.1.2」が最新でした。では、早速インストーラ(strawberry-perl-5.22.1.2-64bit.msi 注:私の環境は64bitです)を起動します。

    • ウェルカム
      sp01
    • ライセンス
      sp02
    • フォルダ選択
      sp03
    • 準備完了
      sp04
    • 進行中…
      sp05
    • 完了
      sp06
  2. 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のプロンプトが返ってきたらインストール終了です。
    最後にエラーが出ますが動作には影響ありません。

  3. httpサーバーの起動

    Apacheでもよかったのですが、手っ取り早く確認するためにANHTTPDを利用します。
    公式の配布は終了しているのでこちらのサイトのダウンロードリンクから取得します。ダウンロード対象は「http://ratan.dyndns.info/httpd.zip」です。
    解凍すると早速利用可能になりますので、解凍フォルダ内にあるhttpd.exeを実行します。
    ppm01
    起動するとWindwosの通知領域にアイコンが表示されますので
    ppm02
    右クリックのコンテキストメニューからオプション一般を選びます。
    ppm03

  4. httpサーバーの設定

    では早速サーバーの設定を行います。
    ppm04

    • ドキュメントルート

      HTTPサーバーが管理するルートフォルダを指定します。
      例では「c:\homep」としています。

    • ポート番号

      特に触る必要もありませんが80番を既に利用している方は他のポート番号を指定してください。

    • .pl,.cgi動作の設定

      拡張子「.pl,.cgi」を選択すると編集ボタンが有効になりますので、編集ボタンを押します。
      ppm05
      こちらでは実行プログラムにStrawberryPerlを指定します。標準インストールであれば「C:\Strawberry\perl\bin\perl」になります。「C:\Strawberry\perl\bin\perl.exe」と記載してもOKです。
      チェックボックスは任意ですが、とりあえず動かしたい方は上記の通り指定してみてください。

    • 変更の適用

      実行プログラムの内容、オプションの内容をOKボタン もしくは 適用ボタンで確定します。変更が適用されるとhttpサーバーが再起動し、変更内容が反映されます。

  5. 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によってライセンスされています)。
    ppm06

    creativecommons_byクリエイティブ・コモンズ(表示)

  6. 終わりに

    比較的簡単にImage::Magickの利用ができたかと思います。
    ANHTTPDはレジストリを触っていないので不要の場合は、httpサーバー停止後にフォルダごと削除で大丈夫です。StrawberryPerlはコントロールパネルのプログラムの削除からどうぞ。

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!