写在前面的话:
技术点:PHP的GD库
越学习,越发现自己的无知,当真如此,永远需要抱着学徒的心,今天把GD的所有函数看了下,不日用空更新
正文:
$img = '5212901b71dc6cf0bc910424b116361.jpg';
list($width, $height, $type, $attr) = getimagesize($img);
switch($type){
case 2:
$im = imagecreatefromjpeg($img);
break ;
case 3:
$im = imagecreatefrompng($img);
break ;
}
$status = '未点赞';
imagetruecolortopalette($im, false, 255);
$result = imagecolorclosest($im, '249', '72', ' 116');
$result = imagecolorsforindex($im, $result);
$red = $result['red'];
$green= $result['green'];
$blue = $result['blue'];
if($red >= 139 && $red <= 255){
if($green >= 62 && $green <= 82){
if($blue >= 106 && $blue <= 126){
$status = "已点赞";
}
}
}
echo $status;
echo "<br />";
echo "<img src='$img' style='width:15%;'/>";
//print_r($result);
imagedestroy($im);
运行截图 :
实现的过程:
本来打算用imagecolorat(取得某像素的颜色索引值)和imagecopyresampled实现效果的发现不同机型的点赞位置不一样,不是等比例进行适配的,无奈作罢,只好使用通过要对比图片的RGB色值来对比,唯一难的是点赞图标的色值是渐变的不是固定的,通过反复的取值,找到一个稍微可以中性的,后续可以利用专业软件分析他们的RGB组 进行精确对比