代码之家  ›  专栏  ›  技术社区  ›  Jack

黑色图像检测和忽略文本。怎么用?

  •  0
  • Jack  · 技术社区  · 8 年前

    我的安全摄像头有故障,有时在移动时,第一个卡扣是黑色的。这不是一个真正的问题,但我正在寻找一种方法,通过一个PHP脚本删除这些黑色图像。

    这张照片非常适合全黑图像:

    <?php
    function check_if_black($src){
    
       $img = imagecreatefromjpeg($src);
        list($width_orig, $height_orig)=getimagesize($src);
        for($i=0;$i<20;$i++){
            $rand_width=rand ( 0 , $width_orig );
            $rand_height=rand ( 0 , $height_orig );
            $rgb = imagecolorat($img, $rand_width, $rand_height);
            if($rgb!=0){
                return "not black";
            }
        }
        return "black";
    }
    ?>
    

    我的快照上有一个白色的时间戳。总是在同一个位置,并且总是使用白色文本。上面贴的代码显示图像不是黑色的。但是 80% 是的。是否有方法检测快照是否为黑色,并忽略其上的白色时间戳?

    快照示例: Sample screenshot

    2 回复  |  直到 8 年前
        1
  •  1
  •   ManiMuthuPandi    8 年前

    如果时间戳将放置在图像的底部,则可以忽略底部的某个高度,然后获取图像的宽度和高度。现在你只有黑色的图像

    function check_if_black($src){
    
       $img = imagecreatefromjpeg($src);
        list($width_orig, $height_orig)=getimagesize($src);
        $height_orig=$height_orig-20;//Reduce some height(Ex 20px) here
        for($i=0;$i<20;$i++){
            $rand_width=rand ( 0 , $width_orig );
            $rand_height=rand ( 0 , $height_orig );
            $rgb = imagecolorat($img, $rand_width, $rand_height);
            if($rgb!=0){
                return "not black";
            }
        }
        return "black";
    }
    
        2
  •  1
  •   Gufran Hasan    8 年前

    我理解你的问题,你只需要打电话 check_if_black($src) 函数检查是否返回黑色,然后使用 unlink() 函数删除此图像。

    <?php
    function check_if_black($src){
    
       $img = imagecreatefromjpeg($src);
        list($width_orig, $height_orig)=getimagesize($src);
        for($i=0;$i<20;$i++){
            $rand_width=rand ( 0 , $width_orig );
            $rand_height=rand ( 0 , $height_orig );
            $rgb = imagecolorat($img, $rand_width, $rand_height);
            if($rgb!=0){
                return "not black";
            }
        }
        return "black";
    }
    
    // $src is iamge path
    
        $resp = check_if_black($src);
        if($resp=='black'){
         unlink($src);
        }
    
    ?>