找到白色像素线

时间:2013-06-02 12:30:18

标签: php image-processing gd php-gd imagecreatefrompng

我想用其他颜色替换完全白色列中的所有白色像素,如果列上有黑色像素,则不会改变任何内容,但我不知道问题出在哪里......

以下是代码:

function findLines() {
    $blank = 1;
    $im_1 = imageCreateFromPng('resize_1.png');
    for($i=0; $i<1090; $i++) {
        if($blank == 1) {
            for($j=0; $j<240; $j++) {
                $rgb = imageColorAt($im_1, $i, $j);
                $r = ($rgb >> 16) & 0xFF;
                $g = ($rgb >> 8) & 0xFF;
                $b = $rgb & 0xFF;
                $c = $r.$g.$b;
                if($c === "0 0 0") {
                    $blank = 0;
                }
                $color = imageColorAllocate($im_1, 0, 255, 255);    
                imageSetPixel($im_1, $i, $j, $color);
            }
        }
        if ($blank == 0) {
            for($j=0; $j<240; $j++) {
                $rgb = imageColorAt($im_1, $i, $j);
                $r = ($rgb >> 16) & 0xFF;
                $g = ($rgb >> 8) & 0xFF;
                $b = $rgb & 0xFF;
                $c = $r . " " . $g . " " . $b;
                if($c === "255 255 255") {
                    $blank = 1;
                }


            }
        } else {
            $blank = 0;
        }
    } 
    header("Content-Type: image/png");
    imagepng($im_1);
}

1 个答案:

答案 0 :(得分:0)

这是正确的。不管怎样,谢谢!

function findLines() {
    $im_1 = imageCreateFromPng('resize_1.png');
    for($i=0; $i<1090; $i++) {
        $blank = 1;
        for($j=0; $j<240; $j++) {
            $rgb = imageColorAt($im_1, $i, $j);
            if($rgb == 0) {
                $blank = 0;
            }
        }
        if ($blank == 1) {
            for($j=0; $j<240; $j++) {
                $color = imageColorAllocate($im_1, 155, 155, 155);  
                imageSetPixel($im_1, $i, $j, $color);
            }
        } else {
            $blank = 0;
        }
    }
    header("Content-Type: image/png");
    imagepng($im_1);
}