1. public function imgColor($imgUrl) {
  2. $imageInfo = getimagesize($imgUrl);
  3. //图片类型
  4. $imgType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
  5. //对应函数
  6. $imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType);
  7. $i = $imageFun($imgUrl);
  8. //循环色值
  9. $rColorNum=$gColorNum=$bColorNum=$total=0;
  10. for ($x=0;$x<imagesx($i);$x++) {
  11. for ($y=0;$y<imagesy($i);$y++) {
  12. $rgb = imagecolorat($i,$x,$y);
  13. //三通道
  14. $r = ($rgb >> 16) & 0xFF;
  15. $g = ($rgb >> 8) & 0xFF;
  16. $b = $rgb & 0xFF;
  17. $rColorNum += $r;
  18. $gColorNum += $g;
  19. $bColorNum += $b;
  20. $total++;
  21. }
  22. }
  23. $rgb = array();
  24. $rgb['r'] = round($rColorNum/$total);
  25. $rgb['g'] = round($gColorNum/$total);
  26. $rgb['b'] = round($bColorNum/$total);
  27. return $rgb;
  28. }
  1. //将rgb颜色值转为16进制
  2. public function rgb2html($r, $g=-1, $b=-1)
  3. {
  4. if (is_array($r) && sizeof($r) == 3)
  5. list($r, $g, $b) = $r;
  6. $r = intval($r); $g = intval($g);
  7. $b = intval($b);
  8. $r = dechex($r<0?0:($r>255?255:$r));
  9. $g = dechex($g<0?0:($g>255?255:$g));
  10. $b = dechex($b<0?0:($b>255?255:$b));
  11. $color = (strlen($r) < 2?'0':'').$r;
  12. $color .= (strlen($g) < 2?'0':'').$g;
  13. $color .= (strlen($b) < 2?'0':'').$b;
  14. return '#'.$color;
  15. }
  1. //RGB转hsv
  2. //hsv的v貌似是用来判断明暗的,我用这个是为了图片的字体水印灵活使用黑白两色
  3. function RGB_TO_HSV ($R, $G, $B) // RGB Values:Number 0-255
  4. { // HSV Results:Number 0-1
  5. $HSL = array();
  6. $var_R = ($R / 255);
  7. $var_G = ($G / 255);
  8. $var_B = ($B / 255);
  9. $var_Min = min($var_R, $var_G, $var_B);
  10. $var_Max = max($var_R, $var_G, $var_B);
  11. $del_Max = $var_Max - $var_Min;
  12. $V = $var_Max;
  13. if ($del_Max == 0)
  14. {
  15. $H = 0;
  16. $S = 0;
  17. }
  18. else
  19. {
  20. $S = $del_Max / $var_Max;
  21. $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  22. $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  23. $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
  24. if ($var_R == $var_Max) $H = $del_B - $del_G;
  25. else if ($var_G == $var_Max) $H = ( 1 / 3 ) + $del_R - $del_B;
  26. else if ($var_B == $var_Max) $H = ( 2 / 3 ) + $del_G - $del_R;
  27. if ($H<0) $H++;
  28. if ($H>1) $H--;
  29. }
  30. $HSL['H'] = $H;
  31. $HSL['S'] = $S;
  32. $HSL['V'] = $V;
  33. return $HSL;
  34. }

thinkphp3.2 图片平均颜色值的更多相关文章

  1. php获取图片RGB颜色值的例子

    php获取图片RGB颜色值的例子 很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片. 之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然后统计处RG ...

  2. PHP 图片 平均分割

    $filename = 'D://WWW/1.jpg'; $p = 5; // Get new sizes list($width, $height) = getimagesize($filename ...

  3. swift获取图片像素颜色值

    extension UIImage{ /** 获取图片中的像素颜色值 - parameter pos: 图片中的位置 - returns: 颜色值 */ func getPixelColor(pos: ...

  4. Android 动态改变图片的颜色值

    public void onViewClicked(View view) { switch (view.getId()) { case R.id.bt1: img1.setColorFilter(ge ...

  5. ImageMagick:用identify得到图片的平均颜色(基本颜色/主色调)

    一,平均颜色的用途: 很多app在流式的展示图片时, 在图片没加载出来之前, 不是使用统一的背景图, 而是先显示一个纯色的背景, 而背景色和图片的颜色非常接近, 这样给用户的体验会更好. 我们这里演示 ...

  6. iOS 开发之提取图片的主色调用于更换应用主题颜色

    从刷爆 IT 圈的一个事件说起: 新闻:某互联网公司产品经理提出一个需求--要求APP开发人员做到软件根据用户的手机壳改变软件的主题颜色. What Fuck!还有这操作,PM,你过来,保证不打屎你. ...

  7. 【读书笔记《Bootstrap 实战》】3.优化站点资源、完成响应式图片、让传送带支持手势

    A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...

  8. android图片处理方法

    Java代码 //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ...

  9. 【Bootstrap】3.优化站点资源、完成响应式图片、让传送带支持手势

    A.优化站点资源 速度很重要.用户很关心.我们的站点必须加载够快,否则用户就会走人.SEO 也很重要.我们的站点必须加载够快,否者搜索排名就会下降. 明白了这样,我们就来清点一下 [Bootstrap ...

随机推荐

  1. Myeclipse学习总结(3)——Myeclipse中的代码格式化、注释模板及保存时自动格式化

    设置Myeclipse中的代码格式化.注释模板及保存时自动格式化 1:设置注释的模板: 下载此模板:  codetemplates.xml This XML file does not appear ...

  2. Spring项目用junit 时出现org.junit.runners.BlockJUnit4ClassRunner cannot be resolved(转)

    spring框架项目用junit做测试时,程序在自动编译时出现下述问题: 程序的问题是项目中找不到org.junit.runners.BlockJUnit4ClassRunner,有两种可能,一是没有 ...

  3. 洛谷——P2984 [USACO10FEB]给巧克力Chocolate Giving

    https://www.luogu.org/problem/show?pid=2984 题目描述 Farmer John is distributing chocolates at the barn ...

  4. using可以用于释放操作,相当于Dispose()

    using可以用于释放操作,相当于Dispose()

  5. CISP/CISA 每日一题 六

    CISA 每日一题(答) 采用电子数据交换 EDI 的好处: 1.较少的书面工作: 2.较少的信息交换错误: 3.改善了数据库到数据库.公司到公司的信息流: 4.没有多余的数据重新键入: 5.较少的通 ...

  6. ASP.Net MVC Filter验证用户登录

    一.Filter是什么 ASP.NetMVC模式自带的过滤器Filter,是一种声明式编程方式,支持四种过滤器类型,各自是:Authorization(授权),Action(行为),Result(结果 ...

  7. 9.Spring Boot实战之配置使用Logback进行日志记录

    转自:https://blog.csdn.net/meiliangdeng1990/article/details/54300227 Spring Boot实战之配置使用Logback进行日志记录 在 ...

  8. amazeui学习笔记--css(常用组件4)--关闭按钮Close

    amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...

  9. stm32关于.o的错误

    是因为没有加入官方库的原因,而且编译出错之后不能跳转到那里.

  10. 编程——C语言的问题,堆栈

    堆和栈的区别一.预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...