如何使用ImageMagick模糊/像素化图像的一部分?

时间:2015-09-01 13:10:02

标签: image perl image-processing imagemagick blur

我正在使用Perl和ImageMagick(Perl-API)。 在第一步中,我想拍摄图像的矩形并模糊图像的这一部分。期望的结果是具有矩形模糊的原始图像。

在第二步中,我需要使用一个转动的矩形模糊一部分图像(即转动35%)。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

我能想到的最佳方法是利用面具来模糊。这样你就可以画出"一个形状,并通过什么模糊。

示例:

 # Create base image
 convert rose: -sample 200x rose_large.png

rose_large.png

 # Create mask
 convert -size 200x131 xc:black -fill white -draw 'circle 100 65 100 25' rose_mask.png

rose_mask.png

 # Blur with mask
 convert rose_large.png -mask rose_mask.png -blur 0x8 +mask rose_blur_mask.png

rose_blur_mask.png

其他技巧和示例here。我不熟悉Perl API,但应该有Mask方法接受图像处理程序参数。

更新

对于矩形,您只需更新要在蒙版上绘制的形状。这是一个例子,我只是模糊了矩形内的内容。

# Create rectangle mask
convert -size 200x131 xc:white -fill black -draw 'rectangle 50 30 150 100' rose_rectangle_mask.png

rose_rectangle_mask

# And repeat blur apply
convert rose_large.png -mask rose_rectangle_mask.png -blur 0x8 +mask rose_blur_retangle_mask.png

rose_blur_retangle_mask.png

答案 1 :(得分:3)

当你要求PerlMagick时,我把最后剩下的几根头发拉出来尝试在Perl中执行...文件1.png2.png3.png纯粹用于调试所以你可以看到我在做什么。

#!/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.png

enter image description here

<强> 2.png

enter image description here

<强> 3.png

enter image description here

<强> result.png

enter image description here

可能有一种更快,更简单,更有效的方法,但我不知道,而且PerlMagick的例子很少,所以我会把我的标记放在沙子里看看如果有人可以改善它: - )

P.S。不要为我的头发感觉不好 - 无论如何只剩下三个了: - )