如何使用HTML画布getImageData()计算图像上的颜色
How to count Color on Image using HTML canvas getImageData()?
如何使用getImageData()对图像进行颜色计数
我想得到并显示计数。
我的意思是";计数颜色"
客户将图片上传到我的网站
我从网站上保存了一张图片以便打印到";T恤"
但我不能打印超过10种颜色的图像
我想在下载到我的电脑之前检查一下网站上的任何图片
这里有一种计算唯一颜色的方法:
- 迭代缓冲区
- 为每种颜色创建一个保持关键点的对象
- 增加密钥
var canvas = document.querySelector("canvas"),
out = document.querySelector("output"),
ctx = canvas.getContext("2d"),
w = canvas.width,
h = canvas.height,
cells = 9, sx = w / cells, sy = h / cells, x, y
// random color boxes (will be pretty even in count):
for(y = 0; y < h; y += sy) {for(x = 0; x < w; x += sx) {
ctx.fillStyle = "hsl(" + (360*Math.random()) + ",60%,50%)";
ctx.fillRect(x|0, y|0, Math.ceil(sx), Math.ceil(sy));
}}
// get bitmap
var idata = ctx.getImageData(0, 0, w, h), // area to analyze
buffer32 = new Uint32Array(idata.data.buffer), // use 32-bit buffer (faster)
i, len = buffer32.length,
stats = {};
for(i = 0; i < len; i++) {
var key = "" + (buffer32[i] & 0xffffff); // filter away alpha channel
if (!stats[key]) stats[key] = 0; // init this color key
stats[key]++ // count it..
}
// you can loop through the keys and convert the key into RGB values later
out.innerHTML = JSON.stringify(stats);
// convert first key:
var keys = Object.keys(stats),
count = keys.length,
key = keys[0]
var r = key & 0xff, g = (key & 0xff00)>>>8, b = (key & 0xff0000)>>>16;
alert("First key: " + r + "," + g + "," + b + "=" + stats[key] +
"'nUnique colors: " + count);
<canvas></canvas><br><output></output>
现在,您可以使用统计信息(键的数量)来查找唯一数量的颜色,然后可以通过查找接近值来减少数量,或者使用ColorThief为您完成整个工作。
相关文章:
- CKEditor中没有从计算机上传图像的选项
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- 如何以用户友好的方式在计算机上保存从画布转换的图像
- JavaScript计算不同于Firefox的图像尺寸(?)
- 如何使用HTML画布getImageData()计算图像上的颜色
- 如何在JS、jQuery或JAVA中计算图像大小
- 通过图像计数计算图像位置
- JQuery图像大小计算没有'不能在Chrome/Safari中工作
- 如何计算数据列表项(即图像)
- Javascript图像大小计算
- 将本地计算机上的相机捕获的图像保存在文件夹中
- 如何在使用Javascript加载Chrome时计算图像
- 将图像从计算机上传到Fabric.JS Canvas
- 如何计算旋转图像的正确位置偏移
- 当调整另一个图像的大小时,KineticJS会重新计算图像的位置
- 在将图像加载到页面上之前,如何使用jQuery计算图像的宽度和高度
- 计算UIWebView中图像的宽度和高度、x和y位置
- 如何在另一个html页面中使用javascript或jquery和efit计算文件夹中的图像数量
- 背景图像的内联样式是在DOM中计算从"onbeforeunload"事件
- 计算每三周在网站上显示图像