色情图片识别

来源:互联网 发布:域名注册查询工具 编辑:程序博客网 时间:2024/06/05 08:45
foreach ($posts as $k => $v) {    $pics = $v->vPics->get_val();    $filename = $pics[0]->val;    $arr = getimagesize($filename);    list($width, $height, $type) = getimagesize($filename);    switch ($type) {        case '1':            $rs = imagecreatefromgif($filename);            break;        case '2':            $rs = imagecreatefromjpeg($filename);            break;        case '3':            $rs = imagecreatefrompng($filename);            break;    }    // if ($width>$height) {    //     $w = 300;    //     $h = $height*(300/$width);    // }else{    //     $h = 300;    //     $w = $width*(300/$height);    // }    // $rs_thumb = imagecreatetruecolor($w, $h);    // imagecopyresampled($rs_thumb, $rs, 0, 0, 0, 0, $w, $h, $width, $height);    // 建立输出图像    $out = imagecreatetruecolor($width, $height);    $background = imagecolorallocate($out, 0, 0, 0); // 背景设为黑色,失败返回-1    $white = imagecolorallocate($out, 255, 255, 255);    $count = 0;    for ($x=0; $x < $width; $x++) {         for ($y=0; $y < $height; $y++) {             $rgb = @imagecolorat($rs, $x, $y);            $r  = ( $rgb  >>  16 ) &  0xFF ;            $g  = ( $rgb  >>  8 ) &  0xFF ;            $b  =  $rgb  &  0xFF ;                  // 判断是否为肤色            if ($r>95 && $g>40 && $b>20 && $r>$g && $r>$b  && (max($r,$g,$b)-min($r,$g,$b))>15 && abs($r-$g)>15 && ($r-$b)>20 && ($r-$b)<100 ) {                $color = imagecolorallocate($out, $r, $g, $b);                imagesetpixel($out, $x, $y, $color);                $count++;            }        }    }    // echo $count/($width*$height);    $data[$k]['pic'] = $filename;    $data[$k]['val'] = number_format($count/($width*$height), '5');    $data[$k]['count'] = "{$count}/({$width}*{$height})";    ob_start();    imagejpeg($out);    $buffer = ob_get_clean();    ob_end_clean();    $data[$k]['base64'] = 'data:image/jpeg;base64,'.chunk_split(base64_encode($buffer));}$this->rsts = $data;
0 0