我有一些使用PHP和Imagick(ImageMagick)编写的脚本来修剪背景图像,填充纯色并调整大小,但是我需要根据图像内容翻转图像。
所有图像的所有内容都必须在左侧,然后我需要分析图像并检测大部分内容在右侧还是左侧,如果在右侧检测到内容,则需要翻转(我有翻转代码)图片)。
例如:
有效图片。图像的大部分部分/线条/内容在左侧。
无效的图像。图像的大部分部分/线条/内容在右边,必须翻转。
有什么方法可以检测到这一点?
谢谢!
答案 0 :(得分:0)
我的最终脚本:
<?php
/**
* @param string $image
* @param string $side
*
* @return \Imagick
*/
function flop(string $image, string $side): Imagick
{
$image = new Imagick($image);
$clone = clone($image);
$clone->resizeImage(200, 200, Imagick::FILTER_CATROM, 1, true);
$clone->modulateImage(100, 0, 100);
$w = $clone->getImageWidth();
$h = $clone->getImageHeight();
$wHalf = $w / 2;
$right = $left = 0;
for ($x = 0; $x < $w; ++$x) {
for ($y = 0; $y < $h; ++$y) {
if ($clone->getImagePixelColor($x, $y)->getColorAsString() === 'srgb(255,255,255)') {
continue;
}
if ($x > $wHalf) {
++$right;
} else {
++$left;
}
}
}
if (($side === 'left') && ($right > $left)) {
$image->flopImage();
} elseif (($side === 'right') && ($left > $right)) {
$image->flopImage();
}
return $image;
}