【perlメモ】画像にモザイクをかけるサンプル

画像にモザイクを掛けてみるサンプル。画像のライブラリにモザイクを掛けるような機能はないのかなーと思ったけどないみたいなので、簡単なモザイク処理をつくってみた。単に1ピクセル読んで拡大して貼りつけているだけのお手軽な処理。

下の画像は実際に上の画像を読んでcgiでモザイク処理をしたものを表示しています。

ソース:mosaic.cgi

#!/usr/bin/perl
use strict;
use warnings;
use GD;

open my $fh,"1111.jpg";
$/ = undef;
my $img = <$fh>;
close $fh;

#モザイクセルの高さと幅
my $mw = 10;
my $mh = 10;
#モザイク開始座標
my $msx = 350;
my $msy = 150;
#モザイク高さ幅
my $mw2 = 100;
my $mh2 = 210;

my $i = GD::Image->new($img);

for(my $x=$msx; $x<$msx+$mw2; $x+=$mw){
    for(my $y=$msy; $y<$msy+$mh2; $y+=$mh){
        $i->copyResized($i, $x,$y,$x,$y,$mw,$mh,1,1);
    }
}

print "Content-type: image/jpeg\n\n";
binmode(STDOUT);
print $i->jpeg;

exit(0);

 

超シンプルで特別なことはやってないです。画像ライブラリはGD.pmを利用いまだとGDより軽くていいものがありますが(Image::Imlib2など)大抵の共用レンタルサーバーには入ってないのとImageMagickは使いたい機能がバージョンによって動いたり動かなかったりサーバーにインストールされている関連モジュール次第だったりでどこでも動くかというと割と微妙なことが多いのでどこにでも入っててお手軽に使えるGDにしました。

これを踏まえてもうちょっとこったものを作るか昔作ったキン肉マン・ジェネレータに組み込んだりしようかと思う。最近またちょっとMojolicious::Liteで遊んでたりするので練習がてらにMojolicious::Liteと絡めてなにか作ってみたい。っていうかMojoliciousってなんて読むんだろ?検索してもでてこないんだけどモジョリシオウスとかでいいの?だれかおしえてくらさい。

キン肉マン・ジェネレータ

ちなみにキン肉マン・ジェネレータっていうのは下の様に画像をアップロードするか画像のURLを指定すると顔検出WebAPIを利用して自動的に額に肉の字を入れたり目線を入れたりできるウェブアプリです。

20111467

タグ : ,