また,FreeBSDでPerlMagick(その1)はじめにに目次があります。
(9) Rotation:図の回転
図の回転は次のように書く。use Image::Magick; my $img = Image::Magick->new; $img->Read($target_pict); # ------------------------------ $img->Rotate(degrees => 90); # ------------------------------ $img->Write($newname); undef $img;ここで90 は時計回りに90°回転させることを意味している。
オリジナル | Rotation 90を実行した結果 | Rotation 45を実行した結果 |
(10) Resize:図の大きさの変更
Resize は以下のように記述する。ここからは,加工の処理の部分のみを書くことにする。$img->Resize(width => 80, height => 60, blur=>0.5);この80と60が新しいサイズを表している。もとの画像の縦横比と異なる場合については,Resizing or Scalingを読んでみて欲しい。また,blur=>0.5は以前の投稿でも書いたが,画像をどの程度ぼかすかを表す指標であり,1より小さいと多少シャープになる。1より大きいとかなりぼんやりした図になる。
オリジナル (160x120) | 80x60にResizeした |
(11) Crop:図の切り取りとTransformを使ったCropping
図の一部を切り取る処理をCrop という。Crop は以下のいずれかのように書く。いずれでも同じように切り取れる。$img->Crop(width=>120, height=>120, x=>40, y=>40); # 作戦 1 $img->Crop(geometry=>'120x120+40+40'); # 作戦 2 $img->Crop('120x120+40+40'); # 作戦 3ここでwidth とheight は切り取る幅と高さであり,x とy は,左上を原点にした時の切り取る座標の左上の点の位置である。PerlMagickのサイトでは,gravity オプションが選べるように書いてあるが,やってみるとうまくいかなかった。(gravity オプションについてはFreeBSDでPerlMagick(その2)図を描く の(8) Annotate を用いた文字の描画を見て欲しい) 調べてみると,以下のように書くとよいとのことだった。
$img = $img->Transform(crop=>'120x120+40+40', gravity=>'SouthWest');ここでgravity はSouthWest なので左下が原点となっている。このTransform というコマンドはPerlMagick のサイトのコマンド一覧には見当たらず,サイトの下の方に書いてあってなかなか気付かなかった。困ったものだ。
オリジナル (160x120) | 120x120+40+40で Cropしたもの | 左下を原点にして 120x120+40+40で Cropしたもの |
(12) Blur:ぼかす
ぼかすにはBlur を使う。他にRadial Blur やGaussian Blur,Motion Blur などがある。$img->Blur('0.0x1.0'); $img->RadialBlur(5); $img->MotionBlur('0x13+10-10');Blue の引数はradius x sigma であり,sigma はどれぐらい周りまでの点を使ってぼかすかという半径をpixelで表したものであり,radius は実際の計算でどれぐらいの距離までを用いるかを表す。(ちょっとわかりにくいが,ぼかしのために sigma ぐらいの距離で減衰する関数を使うけど,計算には sigma より広い範囲まで使わないといけないので,それを radius で表している,ということ)radius に関してはsigma の3倍ぐらいがいいらしいが,radius をゼロにすると自動的に最適な値を使ってくれるらしい。Radial Blur の引数は度で表した角度である。Motion Blurの引数についてはOptionsを見て欲しい。Blurring and Sharpening Imagesにぼかし関連の説明がある(英語だけど)
オリジナル (160x120) | Blur (0x1) | Radial Blur (5) | Motion Blur (0x13+10-10) |
(13) Sketch, Spread, OilPaint:絵画風の加工
絵画風の加工を幾つか示そう。Sketch は引っかいたような雰囲気にしてくれる。ただし,元の画像が大きいと処理に時間がかかることがあるので注意が必要である。Spread は拡散処理。一種のぼかし加工と言えるかもしれない。OilPaint は油彩画風にしてくれるもの。$img->Sketch(radius=>0, sigma=>10, angle=>135); $img->Spread(radius => 2); $img->OilPaint(radius => 2);引数についてはOptionsを見て欲しい。
オリジナル (160x120) | Sketch | Spread | OilPaint |
(14) Vignette:縁飾り
写真の周りを白っぽくぼかす縁飾りをVignette という。Image MagickでのVignette は縁を白以外の色にすることもできる。以下のいずれかのように書く。$img->Vignette(geometry=>'0x10+0+0',background=>'White'); # 作戦 1 $img->Vignette(geometry=>'0x7+5+5',background=>'black'); # 作戦 2ここでgeometry はradius x sigma+x+y であり,sigma はぼかす幅,radius はぼかし計算に使う領域の半径(ゼロにセットすると自動で最適化してくれる),x とy は,上下左右の端から縁取りまでの距離を表す。
オリジナル (160x120) | geometry=>'0x10+0+0' background=>'White' | geometry=>'0x7+5+5' background=>'black' |
FreeBSDでPerlMagick(その4)図形の描画と画像の加工に続く
0 件のコメント:
コメントを投稿