发布时间: 2020-7-13 文章作者: myluzh 分类名称: PHP 朗读文章
<?php /** * 获取一张图片的主要颜色 * @param string $imgUrl 图片的本地路径或者在线路径 * @param boolean $isHex 是否获取16进制的主要颜色 */ function getMainColor($imgUrl,$isHex=false) { $imageInfo = getimagesize($imgUrl); //图片类型 $imgType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1)); //对应函数 $imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType); $i = $imageFun($imgUrl); //循环色值 $rColorNum=$gColorNum=$bColorNum=$total=0; for ($x=0;$x<imagesx($i);$x++) { for ($y=0;$y<imagesy($i);$y++) { $rgb = imagecolorat($i,$x,$y); //三通道 $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $rColorNum += $r; $gColorNum += $g; $bColorNum += $b; $total++; } } $rgb = array(); $r = round($rColorNum/$total); $g = round($gColorNum/$total); $b = round($bColorNum/$total); if($isHex){ return rgb2Hex($r, $g, $b); } return "rgb($r, $g, $b)"; } /** * RGB颜色转16进制颜色 * @param int|array $r * @param int $g * @param int $b */ function rgb2Hex($r, $g=-1, $b=-1) { if (is_array($r) && sizeof($r) == 3) list($r, $g, $b) = $r; $r = intval($r); $g = intval($g); $b = intval($b); $r = dechex($r<0?0:($r>255?255:$r)); $g = dechex($g<0?0:($g>255?255:$g)); $b = dechex($b<0?0:($b>255?255:$b)); $color = (strlen($r) < 2?'0':'').$r; $color .= (strlen($g) < 2?'0':'').$g; $color .= (strlen($b) < 2?'0':'').$b; return "#$color"; } echo getMainColor('https://cn.bing.com/th?id=OHR.AbuSimbelSunFest_EN-CN8625936842_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp'); //输出rgb(103, 54, 12) echo getMainColor('https://cn.bing.com/th?id=OHR.AbuSimbelSunFest_EN-CN8625936842_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp',1); //输出#67360c
标签: php
发表评论