色情图片识别

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值