为了账号安全,请及时绑定邮箱和手机立即绑定

在加载图像之前如何实现加载图像的平均颜色?

在加载图像之前如何实现加载图像的平均颜色?

PHP
哈士奇WWW 2022-07-29 15:15:08
我想知道谷歌如何处理图像,以便缩略图在加载之前显示颜色。当我搜索某些东西时,结果就像当我检查照片时,它显示它们是一个锚标签,其背景颜色类似于整体实际图像颜色我有一个充满图像的网站,由于请求数量众多,网站性能非常糟糕我使用了这个java脚本代码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;}如何在加载实际照片之前添加 rgb 颜色作为占位符,然后使用延迟图像加载技术加载实际图像以减少请求数量
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

第一步是防止预先加载图像。对于使用标签加载的图片,浏览器使用标签的 src 属性来触发图片加载。无论它是 HTML 中的第 1 个还是第 1000 个图像并且在屏幕外,如果浏览器获取 src 属性,它将触发图像加载。

因此,要延迟加载此类图像,请将图像 URL 放在 src 以外的属性中。假设我们在图像标签的 data-src 属性中指定了图像 URL。现在 src 为空,浏览器不会触发图像加载

现在我们已经停止了前期加载,我们需要告诉浏览器何时加载图像。

为此,我们检查一旦图像(即它的占位符)进入视口,我们就会触发加载。


查看完整回答
反对 回复 2022-07-29
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信