PHP - обнаружение черного изображения и игнорирование текста.Как? - PullRequest
0 голосов
/ 22 мая 2018

Мой защитный кулачок выходит из строя, иногда при движении первые снимки черные.На самом деле это не проблема, но я искал способ удалить эти черные изображения с помощью 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 ]

0 голосов
/ 22 мая 2018

Если временная метка будет размещена в нижней части изображения, значит, вы можете игнорировать некоторую высоту в нижней части, а затем взять ширину и высоту изображения.Теперь у вас будет только черное изображение

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";
}
0 голосов
/ 22 мая 2018

Как я понял вашу проблему, вам просто нужно вызвать функцию 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);
    }

?>
...