Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ImageMagick使用偏移量修剪空白_Php_Image Processing_Imagemagick - Fatal编程技术网

Php ImageMagick使用偏移量修剪空白

Php ImageMagick使用偏移量修剪空白,php,image-processing,imagemagick,Php,Image Processing,Imagemagick,我正在使用ImageMagick从图像中删除空白。一切都很顺利。但现在我想保留一个大约30px的偏移量,并从图像中删除额外的空白。我的意思是说我现在的结果是 现在你们可以看到上面的图像是完全修剪,但我想要一些偏移像 我想在每边留下30px,并修剪剩余的空白。我用下面的代码修剪Fuzz $image = new Imagick('capfile.jpg'); $image->trimImage(25000);

我正在使用ImageMagick从图像中删除空白。一切都很顺利。但现在我想保留一个大约30px的偏移量,并从图像中删除额外的空白。我的意思是说我现在的结果是

现在你们可以看到上面的图像是完全修剪,但我想要一些偏移像

我想在每边留下30px,并修剪剩余的空白。我用下面的代码修剪Fuzz

$image = new Imagick('capfile.jpg');                                        
$image->trimImage(25000);

我不想添加边框或裁剪。我只想以30px的偏移量修剪主图像本身,因为我的许多图像也有一些浅背景色,使用模糊进行修剪,因此添加边框不是一个选项。

您可以在命令行获得ImageMagick将要修剪的修剪框,如下所示:

convert -fuzz 10% -format %@ cap.jpg info:
259x171+19+21
然后,在使用修改后的数字进行裁剪之前,您可以根据需要修改宽度/高度和偏移量-即,从x和y偏移量中减去30,在宽度和高度中添加60

emcconville编辑

如何在php中实现这一点

这里有一个PHP替代方案

$img=newimagick'/tmp/Zpuq9.jpg'; //让Quantum计算40% $quantumInfo=$img->getQuantumRange; //-模糊40% $img->trimImage$quantumInfo['quantumRangeLong']*0.4; //-格式%@ $img->setOption'format',“%@”; //信息: $img->setImageFilename'info:'; /* *对于本例,让我们使用PHP内存协议 *从“info:”中捕获std。 */ $fd=fopen'php://memory","rwb",; $img->writeImageFile$fd; fseek$fd,0; $info=fread$fd,1024; fclose$fd; var_dump$info; //=>string13 258x170+19+22
我知道这有点傻,但这对我来说很有效,这是一个解决办法。我无法得到这个,所以我想出了完全不同的方法

1有时我们上传的照片是可视化的,比如卧室内部,所以我们不需要修剪照片中的空白,因为它不存在。这就是为什么我们需要用这个线程中的get_avg_luminance函数来检查照片是亮还是暗

现在我们必须写下这个

$src_image = new Imagick($src_file);
$dimmensions = $src_image->getImageGeometry();
$height = $dimmensions['height'];
$luminance = get_avg_luminance($src_file);

// If image is mostly bright then add white border with 5% of entire height
if ($luminance > 170) {
    $quantumInfo = $src_image->getQuantumRange();
    if ($src_image->trimImage($quantumInfo['quantumRangeLong']*0.1)) {
            // add white border with 5% of offset
            $src_image->borderImage('#ffffff', 0, ($height *0.05));
    }
}

它正在为图像添加边框,对我来说还可以:

我如何在php中实现这一点?请提供此命令的php代码格式,以便我理解。因为我最近才开始使用ImageMagick@emcconville这对我的情况不起作用。这个模糊值似乎不适用。我的图片在图片空白处被完美剪切。