Imagerを使おう - 第2回「画像を加工する」
なお、今回でてくる$imgというのは前回紹介した画像を読み込んだImagerのインスタンスだと思ってください。
今回サンプルとして加工に使う画像は下記になります。
- 拡大縮小 まずはオーソドックスな拡大縮小です。コードは以下。
$new_img = $img->scale(scalefactor => 0.5); # 縦横を元画像の半分にする(scale01.jpg) $new_img = $img->scale(scalefactor => 1.5); # 縦横を元画像の2倍にする(scale02.jpg) $new_img = $ima->scale(xpixels => 400, ypixels => 200); # 横を400px、縦を200pxに縮小するこんな感じです。scale()でいろいろな引数を取ることができます。この他にもscaleX()、scaleY()メソッドなどもあります。
scale01.jpg
scale02.jpg
$new_img = $img->rotate(degrees => 30); # 30度時計回りに回転(rotate01.jpg) $new_img = $image->rotate(radians => 3.141592/4); # 同じ回転ですが、ラジアンで指定することもできます $new_img = $image->rotate(degrees => 30, back => '#ffff00'); # 背景を黄色にして30度回転(rotate02.jpg)回転はrotate()メソッドを使うことでできます。また、backという引数を指定することで、回転したあとの新しく描画しなければならない背景の色も渡せます。
rotate01.jpg
rotate02.jpg
$new_img = $img->crop(left => 50, right => 100, top => 50, bottom => 100); $new_img = $img->crop(left => 50, top => 50, width => 100, height => 100);(crop01.jpg)画像の左上からの相対的な(x,y)座標をleftとtopという値で指定し、右下の(x,y)座標を指定したい場合にはrightとbottomを、縦横の長さで指定したい場合にはheightとwidthを指定します。
crop01.jpg
$new_img = $img->flip(dir => 'h'); # 左右逆転(flip01.jpg) $new_img = $img->flip(dir => 'vh'); #上下 & 左右逆転'h'はhorizontal(左右)、'v'はvertical(上下)ですね。その組み合わせをdirという値で引数として渡します。
flip01.jpg
$img1->paste(left => 20, top => 20, src => $img2); # (paste01.jpg)今までとちょっと違いますね。今までは$img->method()のリターンで新しい画像を受けとっていましたが、今回は $img1->paste() を呼ぶとそのまま $img1 が新しい画像になります。leftとtopは元画像($img1)の左上からの(x,y)座標になります。そしてsrcが貼り付ける画像のImagerのインスタンスになります。
paste01.jpg
さて、いろいろな加工を紹介してみましたがどうだったでしょうか。Imagerにはこれ以外にもいろいろな加工のためのメソッドが用意してあります。色の変更や画像をぐにゃぐにゃしたり、もうちょっと細かい加工もできます。また自分で加工する処理を追加(作成)することもできるようです。
もう少し高度な加工については次回以降、徐々に紹介していくことにします。
次回は、なににしようかな。
…えーと「文字を書く」を紹介しようと思います。