当前位置: 首页 > 面试题库 >

通过Javascript获取图像的平均颜色

郭云
2023-03-14
问题内容

不确定是否可行,但希望编写一个脚本来返回图像的平均值hexrgb值。我知道可以在AS中完成,但希望在JavaScript中完成。


问题答案:

AFAIK,做到这一点的唯一方法是<canvas/>

请注意,这仅适用于相同域中的图像以及支持HTML5 canvas的浏览器:

function getAverageRGB(imgEl) {

    var blockSize = 5, // only visit every 5 pixels
        defaultRGB = {r:0,g:0,b:0}, // for non-supporting envs
        canvas = document.createElement('canvas'),
        context = canvas.getContext && canvas.getContext('2d'),
        data, width, height,
        i = -4,
        length,
        rgb = {r:0,g:0,b:0},
        count = 0;

    if (!context) {
        return defaultRGB;
    }

    height = canvas.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;
    width = canvas.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;

    context.drawImage(imgEl, 0, 0);

    try {
        data = context.getImageData(0, 0, width, height);
    } catch(e) {
        /* security error, img on diff domain */
        return defaultRGB;
    }

    length = data.data.length;

    while ( (i += blockSize * 4) < length ) {
        ++count;
        rgb.r += data.data[i];
        rgb.g += data.data[i+1];
        rgb.b += data.data[i+2];
    }

    // ~~ used to floor values
    rgb.r = ~~(rgb.r/count);
    rgb.g = ~~(rgb.g/count);
    rgb.b = ~~(rgb.b/count);

    return rgb;

}


 类似资料:
  • 问题内容: 我希望能够拍摄图像并找出平均颜色是多少。意思是如果图像是半黑半白,我会在两者之间得到一些…灰色阴影。它可能是最常见的单色或中间值。任何平均值都可以。 我该如何在android中做到这一点。 问题答案:

  • 问题内容: 我最近试图将代码从这里转换为Swift。但是,无论图像如何,我都会保持白色。这是我的代码: 提前致谢。 问题答案: iOS 9中的CoreImage:使用CIAreaAverage过滤器并传递要平均的整个图像的范围。 另外,它既可以在GPU上运行,也可以作为高度优化的CPU CIKernel运行,因此速度更快。

  • 我在我的RPi上托管了一个webservice,我有一个。png图像,我可以从android设备通过网络访问。这是我获取该图像的代码: 在这里,当单击按钮时(在Oncreate事件中),我会将图像显示到图像视图中: 我的用户清单中有互联网,但每当我运行应用程序时,它就会强制关闭。我觉得这和我的听众有关,但我无法解决。谢谢你的帮助,因为我非常困惑。(虽然我有java desktop的经验,但我对An

  • 问题内容: 给定透明的PNG以白色显示简单形状,是否有可能通过CSS更改其颜色?某种覆盖还是什么? 问题答案: 您可以将筛选器与和一起使用:筛选器相对于浏览器而言是较新的,但根据以下CanIUse表,超过90%的浏览器均支持它们 您可以将图像更改为灰度,棕褐色等(请看示例)。 因此,您现在可以使用滤镜更改PNG文件的颜色。

  • 我的API请求:\u HTTPS://myserver/getcaptchaimage?accesstoken=mytoken 响应:验证码图像 标题: 缓存控制私有内容类型图像/png日期2016年7月4日周一09:15:05 GMT服务器Microsoft IIS/7.5传输编码分块X-AspNet-Version 4.0.30319 X-Powered-By ASP。净额 我的代码(http

  • 我想知道我是否正确理解了图像的平均归一化。 据我所知,您计算所有像素的平均值(假设它是灰度)。然后,对于每个像素,减去该平均值。 但是,人们应该如何处理可能出现的负值呢?例如,整个图像的平均值为100,但一个特定像素的强度为90。在这个标准化之后,像素的值将是-10。