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;
色情图片识别
最新推荐文章于 2021-06-25 09:09:09 发布