PHP 判断是否低俗图片==是否@色@情@图@片
方式一:
原理:通过 RGB色彩模型 转成 YCbCr色彩模型 在 YCbCr色彩模型 判断低俗色的占比
if(validatorImage("d:/b.jpg"))<br /> echo '是个低俗图片<br />';<br /> else<br /> echo '不是低俗图片<br />';<br /> function validatorImage($fileName){<br /> $image = getImage($fileName);<br /> $width = ImagesX($image);<br /> $height = ImagesY($image);<br /> $ycb = 0;<br /> for($y=0;$y<$height;$y++){<br /> for($x=0;$x<$width;$x++){<br /> $rgb = ImageColorAt($image,$x,$y);<br /> $r = ($rgb >> 16) & 0xFF;<br /> $g = ($rgb >> 8) & 0xFF;<br /> $b = $rgb & 0xFF;<br /> $ycbcr = rgb2ycbcr($r,$g,$b);<br /> if((86<=$ycbcr['cb']&&$ycbcr['cb']<=117)&&(140<=$ycbcr['cr']&&$ycbcr['cr']< 168)){<br /> $ycb++;<br /> }<br /> }<br /> }<br /> imagedestroy($image);</p> <p> if($ycb>(floatval($width)*floatval($height)*0.3))<br /> return true;<br /> else<br /> return false;<br /> }</p> <p>function getImage($fileName){<br /> $info = getImageSize($fileName);<br /> $ext = null;<br /> switch ($info[2]) {<br /> case 1 :<br /> $ext = "gif";<br /> break;<br /> case 2 :<br /> $ext = "jpeg";<br /> break;<br /> case 3 :<br /> $ext = "png";<br /> break;<br /> }<br /> $function = 'ImageCreateFrom'.ucfirst($ext);<br /> $resource = $function($fileName);<br /> return $resource;<br /> }<br /> // RGB 转 YCbCr色彩<br /> function rgb2ycbcr($r,$g,$b){<br /> $r = floatval($r);<br /> $g = floatval($g);<br /> $b = floatval($b);</p> <p> $y = 0.299*$r + 0.587*$g + 0.114*$b;<br /> $cb = (1 / 1.772) * ($b - $y) + 128;<br /> $cr = (1 / 1.402) * ($r - $y) + 128;</p> <p> return array('y'=>$y,'cb'=>$cb,'cr'=>$cr);<br /> }<br />
说明:
上面是通过 RGB色彩模型 转成 YCbCr色彩模型 在 YCbCr色彩模型 判断低俗色的占比,如果商用还要加上肌肤色的过滤及对低俗部位的判断,依据比例对图片进行分类。
YCbCr 相关知识,可以参考http://zh.wikipedia.org/wiki/YCbCr
RGB 转成 YCbCr 公式可以参考http://blog.csdn.net/zyl910/archive/2006/05/29/759535.aspx
方式二:
原理就是检测皮肤颜色在图片中的比例。经过测试,漏掉的很少,不过误报很高。
<?php /** * PHP检查低俗图片 * 作者:书中蠹鱼 */ if($argc == 2){ $file_name = $argv[1]; if(is_file($file_name)){ //文件存在 $image = openImageFile($file_name); $rate = testSkin($image['image_handle'],$image['width'],$image['height']); if($rate > 0.3){ echo "$file_name 貌似是一张低俗图片.肤色比例:$rate/n"; }else { echo "$file_name 貌似不是一张低俗图片.肤色比例:$rate/n"; } }else { echo "$file_name can't be find!/n"; } }else{ echo "Usage: testskin.php FileName/n"; } function openImageFile($file_name){ list($width, $height, $type, $attr) = getimagesize($file_name); switch ($type){ case 2: $image_handle = imagecreatefromjpeg($file_name); break; } return array('image_handle'=>$image_handle,'width'=>$width,'height'=>$height); } function testSkin($image_handle,$width,$height){ $skin_pix = 0; for($w=0;$w<$width;$w++){ for ($h=0;$h<$height;$h++){ //验证图片 $rgb = imagecolorat($image_handle,$w,$h); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $Y=0.299*$r+0.587*$g+0.114*$b; $Cb=0.564*($b-$Y)+128; $Cr=0.713*($r-$Y)+128; if($Cb >= 86 && $Cb <= 117 && $Cr >= 140 && $Cr <= 168){ $skin_pix ++; } } } $skin_rate = $skin_pix/($width*$height); return $skin_rate; } ?>
需要GD库的支持。在php.ini里面打开gd扩展。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver CS6
Alat pembangunan web visual

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
