Php ImageMagick使用偏移量修剪空白
我正在使用ImageMagick从图像中删除空白。一切都很顺利。但现在我想保留一个大约30px的偏移量,并从图像中删除额外的空白。我的意思是说我现在的结果是 现在你们可以看到上面的图像是完全修剪,但我想要一些偏移像 我想在每边留下30px,并修剪剩余的空白。我用下面的代码修剪FuzzPhp ImageMagick使用偏移量修剪空白,php,image-processing,imagemagick,Php,Image Processing,Imagemagick,我正在使用ImageMagick从图像中删除空白。一切都很顺利。但现在我想保留一个大约30px的偏移量,并从图像中删除额外的空白。我的意思是说我现在的结果是 现在你们可以看到上面的图像是完全修剪,但我想要一些偏移像 我想在每边留下30px,并修剪剩余的空白。我用下面的代码修剪Fuzz $image = new Imagick('capfile.jpg'); $image->trimImage(25000);
$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这对我的情况不起作用。这个模糊值似乎不适用。我的图片在图片空白处被完美剪切。