Memo

Perl::ImageMagickでよく使うコマンドとサンプル

最近作ったwebサービス、pattren*makerをはじめ、ImageMagickを使ったサービスで遊んでいるを作っているひつじさんです。
それこそPerlを触るようになった6〜7年前くらいからImageMagickと戯れているんですが、使ってるよーって人をあまり見ないような…(サービスの裏側なんてまぁ普通は見せないもんですよね)

需要はあまりない?だけど、便利なImageMagick

きっかけはPCでも携帯(ガラケー)でも見れる写真サイトをやりたかったんです。
PCでは大きいサイズ、携帯では携帯用サイズに自動変換。
探せばそういうサイトもあったんですが、PCでの見た目がイマイチで、自分でそういう仕組みを作ってしまおう!と。
ちょうどPerlを勉強していた事もあり、なんとか自作してすごく満足してましたね。
(そのサイトをやるため、ImageMagickが使いたくて、月額500円の有料サーバを借りました。その頃はそこぐらいしかImageMagickが入ってなかったんです)
勉強していた当時もそうですが、日本語の解説サイトってあんまりないんですよね。
探しまくって探しまくって、すごく分かりやすい日本語のサンプル集を見つけたんですが、いつの間にか無くなっていてしょんぼりです。
自分でよく使うくせに、しばらくすると忘れてしまうんで、ふと思い立った時に使える用のサンプルを自分で用意してみました。

よく使うサンプル集

使用した元画像)
 

※猫写真は無料写真素材ぱくたそさんからお借りしました

画像の読み込み&表示

実行結果)

画像の読み込み&書き出し

実行結果)
サンプル2
※リンク先では「Complete!」しか表示されませんが、きちんとtest.jpgが書き出されています。

フォーマット変更

実行結果)

分かりにくいですが、jpeg画像がgif画像として表示されています。
書き出す際の「print (“Content-type: image/gif\n\n”); 」と「$image->Write(“gif:-“);」をpngにすればpng画像として表示することもできます。

サイズ変更

実行結果)

今回は「Scale」を使っていますが「Resize」というコマンドもあります。

画像を重ねる

実行結果)

重ねる画像を半透明にしたい時は18行目辺りを以下のように

実行結果)

「compose=>’Dissolve’」の部分をオーバーレイ(Overlay)やスクリーン(Screen)で重ねる事もできます。

色を変える

実行結果)

opacityを100にすると上記のように丸々塗りつぶされます。
透過pngは透過していない部分に色が付きます

実行結果)

opacityを調整すると上記のような感じに

効果を付ける

実行結果)

油絵調に変換。

実行結果)

全体的にぼかしてみたり

実行結果)

エンボス効果を入れてみたり

文字を書く

実行結果)

※フォントはあんずもじを使用しました。

上記のサンプルをまとめたzipファイルも一応用意してみました。必要な方はどうぞ。
(使用した写真やフォントファイルは入っていませんのでご注意を)
perlmagickサンプルzip

他にも色々面白いコマンドはあるので、ぜひ試してみてください。
Perl::ImageMagick – Linux Wizardへの道

公式サイト(英語)にもサンプル一覧があるので、そちらもぜひ参考に
実行結果 http://www.imagemagick.org/script/examples.php
スクリプト http://www.imagemagick.org/source/examples.pl

そのうちphpでも使えるようにもっと勉強したいですねぇ@・ェ・@

POSTED COMMENT

  1. […] PerlでImageMagickを使う方法についてもまとめた記事を書いてるんですが(こちら)、PerlとPHPで考え方は似てるけど、書き方は結構違ったりして面白いです。よかったら見比べてみてくださ […]

  2. […] イトは丁寧に解説されているのでおすすめです。 Perl::ImageMagickでよく使うコマンドとサンプル | くろひつじのメモ帳 […]

  3. sefid より:

    こんにちは、
    Perlの初心者です、色々参考させて頂きます、

    Arc Distortion
    https://www.imagemagick.org/Usage/distorts/

    $image->arc(
    ここに書くべきコードを教えて頂きますでしょうか?
    );

    アドバイスおねがいします。

    • Mei Koutsuki より:

      sefidさん
      初めまして。
      すみません、ご質問の件ですが、意図がわからないのでお返事のしようがありません。
      記載したURLも拝見しましたが、よくわかりませんでした。
      掲載しているコードと、リンク先のサンプルを見比べながら、ご自分で色々と試してみてくださいとしかお答えできません。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください