文章参考:

图片主色获取脚本rgbaster.js小介绍小使用 « 张鑫旭-鑫空间-鑫生活 rgbaster.js Github 地址 扩展脚本 如果要取多个颜色,推荐使用color-thief:https://github.com/lokesh/color-thief

  • 温馨提示:

    该示例需要在本地开一个服务这样才可以使 rgbaster.js 正常的访问到图片的具体信息,否则会有你跨域的报错信息 图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图1

示例:

  1. 简单的获取主色、次色、调色板
  • 源码

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>获取图片主题色脚本基础示例</title>
    6. <script src="./rgbaster.js"></script>
    7. </head>
    8. <body>
    9. <img src="./demo.jpg" alt="" id="image">
    10. <script type="text/javascript">
    11. var img = document.getElementById('image');
    12. RGBaster.colors(img, {
    13. success: function(payload) {
    14. // You now have the payload.
    15. // payload.dominant是主色,RGB形式表示
    16. // payload.secondary是次色,RGB形式表示
    17. // payload.palette是调色板,含多个主要颜色,数组
    18. console.log(payload.dominant);
    19. console.log(payload.secondary);
    20. console.log(payload.palette);
    21. }
    22. });
    23. </script>
    24. </body>
    25. </html>
  • 控制台输出效果图

    图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图2

  • 需要注意的地方:

    图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图3 由于该脚本是不能够跨域进行访问的,所以除了在服务器端增加标示:Access-Control-Allow-Origin: *之外,就只能将文件都放置在同一个服务器上,我这里是本地开的一个虚拟的服务器,所以像上面那样直接去访问另一个域名下的资源是不可以的 图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图4 还有就是建议使用的图片尽量选择缩略图来进行色值获取,结果其实是和大图的一样的,但是大图在获取时或造成一定的卡顿或是闪屏

  1. 扩展的完整的示例:
  • 源码

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>获取图片主题色脚本扩展的完整的示例</title>
    6. <script src="./rgbaster.js"></script>
    7. </head>
    8. <body>
    9. <img src="./demo.jpg" alt="" id="image">
    10. <script type="text/javascript">
    11. var img = document.getElementById('image');
    12. RGBaster.colors(img, {
    13. // return up to 30 top colors from the palette 从调色板返回最多30个顶级颜色
    14. paletteSize: 30,
    15. // don't count white
    16. //排除 白色
    17. exclude: ['rgb(255,255,255)'],
    18. // do something when done
    19. //获取成功之后
    20. success: function(payload) {
    21. console.log('Dominant color:', payload.dominant);
    22. console.log('Secondary color:', payload.secondary);
    23. console.log('Palette:', payload.palette);
    24. }
    25. })
    26. </script>
    27. </body>
    28. </html>
  • 控制台输出效果图

    图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图5

  1. 加了样式的具体的实现
  • 源码

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>获取图片主题色脚本扩展的完整的示例</title>
    6. <script src="./rgbaster.js"></script>
    7. <style>
    8. img{
    9. padding: 40px;
    10. }
    11. </style>
    12. </head>
    13. <body>
    14. <img src="./demo.jpg" alt="" id="image">
    15. <script type="text/javascript">
    16. var img = document.getElementById('image');
    17. RGBaster.colors(img, {
    18. // return up to 30 top colors from the palette 从调色板返回最多30个顶级颜色
    19. paletteSize: 30,
    20. // don't count white
    21. //排除 白色
    22. exclude: ['rgb(255,255,255)'],
    23. // do something when done
    24. //获取成功之后
    25. success: function(payload) {
    26. // img.style.backgroundColor = payload.dominant;
    27. img.style.backgroundColor = payload.secondary;
    28. console.log('Dominant color:', payload.dominant);//主色
    29. console.log('Secondary color:', payload.secondary);//次色
    30. console.log('Palette:', payload.palette);//调色板
    31. }
    32. })
    33. </script>
    34. </body>
    35. </html>
  • 浏览器效果图

    图片主色值获取脚本-rgbaster-js-介绍-&-使用 - 图6 整个的 padding 的背景色就是取得图片的主色值 Github 示例地址