iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaScript如何实现简单获取本地图片主色调
  • 265
分享到

JavaScript如何实现简单获取本地图片主色调

2023-07-05 10:07:42 265人浏览 八月长安
摘要

本篇内容介绍了“javascript如何实现简单获取本地图片主色调”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现1、实现思路其实思路很简

本篇内容介绍了“javascript如何实现简单获取本地图片主色调”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    实现

    1、实现思路

    其实思路很简单,就是将一张大图先缩小为一张小图,再遍历里面的像素,找到出现次数相对较高的一个;当然,先说明一下,这个也只能实现一个提取近似的值或者跟“人的意识”相反的值,因此,最终结果的“满意程度”可能不是很好。

    2、实现代码

    创建一个 ThemeColor 操作对象,通过回调返回缩略图主色调 ,可进行相关的其他操作

    //本地图片资源let url = 'tree.WEBp'document.getElementById('originalImage').src = urllet themeColor = new ThemeColor(url,(shrinkUrl,color)=>{    //缩略图    let img = document.getElementById('showImage')    if(img){        img.setAttribute('src',shrinkUrl)    }    //主色    document.getElementById('showDiv').style.backgroundColor = color})

    ThemeColor.js

    class ThemeColor{    // 原图资源    imgUrl = ''    // 像素集合    originalPiexls = null    // 缩略图    shrinkUrl = ''    // 主色    themeColor = 'white'    // 回调    themeColorCallBack = null    // 提取像素出现最大次数操作对象    colorCountedSet = new ColorCountedSet()        constructor(imgUrl,callBack){        this.imgUrl = imgUrl        this.themeColorCallBack = callBack        this.startScreeningThemeColor()    }        // 开始解析主色    async startScreeningThemeColor(){        try {            await this.shrinkImage()        } catch (error) {            console.log('error:' + error)        }        this.screeningThemeColor()    }    // 图片缩小    async shrinkImage(){        var image = new Image();        image.src = this.imgUrl;        await new Promise((resolve)=>{            image.onload = resolve        })        let width = image.width        let height = image.height        let shrinkFactor = 10        let shrinkWidth = width / shrinkFactor        let shrinkHeight = height / shrinkFactor        let canvas = document.createElement('canvas')        canvas.setAttribute('width',`${shrinkWidth}px`)        canvas.setAttribute('height',`${shrinkHeight}px`)        var ctx = canvas.getContext("2d")        ctx.drawImage(image,0,0,shrinkWidth,shrinkHeight)        this.shrinkUrl = canvas.toDataURL('image/jpeg',1)        try {            //保存像素            this.originalPiexls = ctx.getImageData(0,0,width,height)        } catch (error) {            console.log(error)        }    }    // 开始筛选主题色    screeningThemeColor(){        if(!this.originalPiexls || !this.originalPiexls.data || this.originalPiexls.data.length == 0){            throw('像素为空')        }        for(let i = 0;i < this.originalPiexls.data.length;i+=4){            let r = this.originalPiexls.data[i]            let g = this.originalPiexls.data[i + 1]            let b = this.originalPiexls.data[i + 2]            let a = this.originalPiexls.data[i + 3] / 255.0            //添加一个色值范围,让它能忽略一定无效的像素值            if(a > 0 && (r < 200 && g < 200 && b < 200) && (r > 50 && g > 50 && b > 50)){                this.colorCountedSet.push(r,g,b,a)            }        }        let maxCount = 0        // 寻找出现次数最多的像素定为主色调        this.colorCountedSet.forEach((value,key)=>{            if(maxCount <= value){                maxCount = value                this.themeColor = 'rgba(' + key + ')'            }        })        //执行回调        if(this.themeColorCallBack){            this.themeColorCallBack(this.shrinkUrl,this.themeColor)        }    } }// 统计不同像素的出现次数class ColorCountedSet{    //像素集合    map = new Map()        //添加像素到集合    push(r,g,b,a){        //根据像素值生成一个map 元素 key值        let identification = r + ',' + g + ',' + b + ',' + a        if(!this.map.get(identification)){            this.map.set(identification,1)        } else {            // 存在进行次数自增            let times = parseInt(this.map.get(identification)) + 1            this.map.set(identification,times)        }    }// 给 ColorCountedSet 操作类添加一个 forEach 方法 forEach(cb){        this.map.forEach(function(value,key){                cb(value,key)        });    }}

    “JavaScript如何实现简单获取本地图片主色调”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: JavaScript如何实现简单获取本地图片主色调

    本文链接: https://www.lsjlt.com/news/350970.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • JavaScript如何实现简单获取本地图片主色调
      本篇内容介绍了“JavaScript如何实现简单获取本地图片主色调”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现1、实现思路其实思路很简...
      99+
      2023-07-05
    • JavaScript实现简单获取本地图片主色调
      目录一、实现效果二、实现1、实现思路2、实现代码三、总结与思考一、实现效果 鲜花 大海 森林 二、实现 1、实现思路 其实思路很简单,就是将一张大图先缩小为一张小图,再遍历里面...
      99+
      2023-03-07
      JavaScript获取图片主色调 JavaScript获取图片色调 JavaScript图片色调 JavaScript图片
    • python实现简单爬取图片保存到本地
      import requests import os url="http://lofter.nos.netease.com/sogou-Y1gxMDFIeFVHeWhCTkZaMEkzYWx1bGR5WEszQTdRTEZPcndxZWo3Q...
      99+
      2023-01-31
      简单 图片 python
    • 如何利用CSS获取图片主题色
      这篇文章将为大家详细讲解有关如何利用CSS获取图片主题色,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景起因是微信技术群里有个同学发问,有什么方法能够获取图片的主色呢有...
      99+
      2024-04-02
    • JavaScript如何实现简单图片切换
      这篇文章主要介绍了JavaScript如何实现简单图片切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript是什么JavaScript是一种直译式的脚本语言,...
      99+
      2023-06-14
    • shell脚本如何实现获取图片
      这篇文章主要介绍了shell脚本如何实现获取图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。shell脚本实现获取图片。#!/usr/bin/bash. /etc/init...
      99+
      2023-06-04
    • JavaScript如何实现获取图片文件真实格式
      这篇文章主要介绍“JavaScript如何实现获取图片文件真实格式”,在日常操作中,相信很多人在JavaScript如何实现获取图片文件真实格式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScrip...
      99+
      2023-07-05
    • Python如何实现简单网页图片
      今天就跟大家聊聊有关Python如何实现简单网页图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  Python实现简单网页图片抓取完整代码实例  分类专栏: python  文章...
      99+
      2023-06-01
    • javascript如何实现简单链式调用
      小编给大家分享一下javascript如何实现简单链式调用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:jQuery用...
      99+
      2024-04-02
    • Android如何实现拍照或者选取本地图片
      这篇文章主要介绍Android如何实现拍照或者选取本地图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下总体流程从selectPhotoActivity中启动图册或者相机,再根据获取的uri进行...
      99+
      2023-06-29
    • Python数据获取如何实现图片数据提取
      本篇内容主要讲解“Python数据获取如何实现图片数据提取”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python数据获取如何实现图片数据提取”吧!有很多功能&hellip;比如用户画...
      99+
      2023-06-30
    • php获取网络图片转base64如何实现
      本篇内容主要讲解“php获取网络图片转base64如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php获取网络图片转base64如何实现”吧!一、使用PHP获取网络图片首先,我们需要获取...
      99+
      2023-07-05
    • JavaScript如何实现异步获取表单数据
      这篇文章主要介绍JavaScript如何实现异步获取表单数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例为大家分享了JavaScript实现异步获取表单数据的具体代码,供大家参考,具体内容如下在上一篇文章中...
      99+
      2023-06-15
    • 如何使用MySQL和JavaScript实现一个简单的图片轮播功能
      要实现一个简单的图片轮播功能,你可以使用MySQL存储图片的相关信息,然后使用JavaScript来实现轮播效果。下面是一个使用My...
      99+
      2023-10-20
      MySQL
    • 如何用js实现简单的图片轮播功能
      这篇文章主要介绍“如何用js实现简单的图片轮播功能”,在日常操作中,相信很多人在如何用js实现简单的图片轮播功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用js实现简...
      99+
      2024-04-02
    • jquery如何实现图片上传前本地预览
      这篇文章主要为大家展示了“jquery如何实现图片上传前本地预览”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jquery如何实现图片上传前本地预览”这篇文章吧...
      99+
      2024-04-02
    • css+filter如何实现简单的图片透明效果
      这篇文章给大家分享的是有关css+filter如何实现简单的图片透明效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。完成简单的透明度控制功能使用filter的功能对图片元素进行...
      99+
      2024-04-02
    • Android开发如何实现在Wifi下获取本地IP地址
      这篇文章主要介绍了Android开发如何实现在Wifi下获取本地IP地址,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。具体如下:代码核心介绍:WifiManager类提供了对设备...
      99+
      2023-05-30
      android wifi ip地址
    • 如何使用MySQL和JavaScript实现一个简单的地图标记功能
      要使用MySQL和JavaScript实现一个简单的地图标记功能,你可以按照以下步骤进行操作:1. 创建数据库表:在MySQL中创建...
      99+
      2023-10-10
      MySQL
    • JS如何实现获取图片大小和预览功能
      这篇文章主要为大家展示了“JS如何实现获取图片大小和预览功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如何实现获取图片大小和预览功能”这篇文章吧。具体如...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作