根据具体颜色找到X和Y的位置php imagecolorat()

时间:2015-02-25 08:08:10

标签: php image

我遇到了php imagecolorat的问题。实际上我想要的是找到左上角黑色矩形的X和Y位置。 但是当我运行代码时,屏幕上什么都没有:3

image link

 $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,但它对我没用。

提前致谢。 :)

1 个答案:

答案 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");

enter image description here