我遇到了php imagecolorat的问题。实际上我想要的是找到左上角黑色矩形的X和Y位置。 但是当我运行代码时,屏幕上什么都没有:3
$im = imagecreatefromjpeg("omr.jpg");
$rgb = imagecolorat( $im , 41 , 5);
$r = ($rgb >> 16) & 0xff;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
function check_rotation ($y)
{
$im = imagecreatefromjpeg("omr.jpg");
$rgb = imagecolorat( $im , 41 , $y);
$r = ($rgb >> 16) & 0xff;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
};
for($y=6 ;$r<125 && $g<125 && $b<125; $y++ )
{
check_rotation ($y);
echo "$y <br>";
$y=$y1;
echo"$y1";
}
N.B。我知道jquery页面x和y,但它对我没用。
提前致谢。 :)
答案 0 :(得分:1)
你可以找到黑色像素的左上角:
$im = imagecreatefromjpeg("omr.jpg");
for($x=0;$x<100;$x++){
for($y=0;$y<100;$y++){
$rgb = imagecolorat($im,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if($r<128 && $g<128 && $b<128){
printf("%d,%d: %d,%d,%d\n",$x,$y,$r,$g,$b);
exit;
}
}
}
<强>输出:强>
30,53: 82,78,75
您可能需要考虑将图像阈值分为3种颜色,以使您的生活更轻松,如下所示:
$im = imagecreatefromjpeg("omr.jpg");
#Get image width / height
$w = ImageSX($im);
$h = ImageSY($im);
# Create a new output image
$out=imagecreate($w,$h);
# Allocate black, white and red
$black = imagecolorallocate($out,0,0,0);
$white = imagecolorallocate($out,255,255,255);
$red = imagecolorallocate($out,255,0,0);
for($y=0;$y<$h;$y++){
for($x=0;$x<$w;$x++){
$rgb = imagecolorat($im,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if($g>128){
$colour=$white;
} else if($r>128){
$colour=$red;
} else $colour=$black;
imagesetpixel($out,$x,$y,$colour);
}
}
imagepng($out,"result.png");