Perl と ImageMagick (Perl-API) を使用しています。最初のステップでは、画像の長方形を取り、画像のこの部分をぼかします(さらにその長方形の回転)。Mark Setchell のおかげで、これはさらに次のように機能します (ここでスタックオーバーフローの質問を参照してください: ImageMagick を使用して画像の一部をぼかし/ピクセル化する方法? )。
今私の目的は、その画像の長方形をより大きなピクセルの結果でぼかすことです。どうすればそれを達成できますか?
これまでに使用したMark Setchellのコードは次のとおりです。
#!/usr/bin/perl
use strict;
use warnings;
use Image::Magick;
my $x;
my $image;
my $blurred;
my $mask;
# Create original fishscale image
$image=Image::Magick->new(size=>'600x300');
$image->Read('pattern:fishscales');
$image->Write(filename=>"1.png");
# Copy original image and blur
$blurred = $image->Clone();
$blurred->GaussianBlur('x2');
$blurred->Write(filename=>"2.png");
# Make mask and rotate
$mask=Image::Magick->new(size=>'600x300');
$mask->Read('xc:white');
$mask->Draw(fill=>'black',primitive=>'rectangle',points=>'100,100,200,200');
$mask->Set('virtual-pixel'=>'white');
$mask->Rotate(20);
$mask->Transparent('white');
$mask->Write(filename=>"3.png");
# Copy mask as alpha channel into blurred image
$blurred->Composite(image=>$mask,qw(compose CopyOpacity gravity center));
# Composite blurred image onto original
$image->Composite(image=>$blurred);
$image->Write(filename=>'result.png');
更新: まだ 1 つの問題が残っています:
回転せずに選択した長方形でうまく機能します。しかし、角度を適用すると、奇妙な結果が得られます。ピクセル化される領域は、私が定義した領域ではありませんが、画像の中央から離れた長方形を選択したり、角度を大きくしたりするほど異なります。
下の画像では、さまざまな長方形が選択され、ピクセル化された領域が示されています。私は45度の角度を使用しました。
ここで何が問題なのか分かりますか?(たぶん「CopyOpacity 重心を構成する」)