当前位置: 首页 > wzjs >正文

做网站如何收费qq空间秒赞秒评网站推广

做网站如何收费,qq空间秒赞秒评网站推广,售房网站开发 .net,做网站的图片分类canvas.toDataURL() 用于将 Canvas 画布内容转换为 Base64 编码的图片数据 URL。 如果 canvas 绘制工作比较复杂,执行 toDataURL() 可能会失败,返回黑色图片Base64 编码数据。 这里根据转换结果检测是否为黑图,参考: /** * 根据…

canvas.toDataURL() 用于将 Canvas 画布内容转换为 Base64 编码的图片数据 URL。

如果 canvas 绘制工作比较复杂,执行 toDataURL() 可能会失败,返回黑色图片Base64 编码数据。

这里根据转换结果检测是否为黑图,参考:

/** * 根据 Base64 编码的图片数据判断是否为黑色图片* @param {string} base64Data - `canvas.toDataURL()` 返回的 Base64 字符串* @param {Object} [options] - 配置选项* @param {number} [options.threshold=0.95] - 黑色像素占比阈值(默认 95%)* @param {number} [options.maxColorValue=10] - RGB 通道最大值(小于此值视为黑色)* @param {number} [options.sampleStep=1] - 抽样步长(1=全检测,2=隔1像素检测,以此类推)* @returns {Promise<boolean>} - Promise 返回检测结果(true 表示是黑色图片)*/
function isBase64ImageBlack(base64Data, options = {}) {const { threshold = 0.95,maxColorValue = 10,sampleStep = 1 } = options;return new Promise((resolve, reject) => {const img = new Image();img.onload = () => {try {const canvas = document.createElement('canvas');const ctx = canvas.getContext('2d');canvas.width = img.width;canvas.height = img.height;ctx.drawImage(img, 0, 0);const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);const data = imageData.data;let blackPixelCount = 0;const step = sampleStep <= 0 ? 1 : sampleStep;// 按步长抽样检测for (let y = 0; y < canvas.height; y += step) {for (let x = 0; x < canvas.width; x += step) {const i = (y * canvas.width + x) * 4;const r = data[i];const g = data[i + 1];const b = data[i + 2];if (r <= maxColorValue && g <= maxColorValue && b <= maxColorValue) {blackPixelCount++;}}}// 计算抽样后的有效像素总数const sampledWidth = Math.ceil(canvas.width / step);const sampledHeight = Math.ceil(canvas.height / step);const totalSampledPixels = sampledWidth * sampledHeight;const blackRatio = blackPixelCount / totalSampledPixels;resolve(blackRatio >= threshold);} catch (error) {reject(error);}};img.onerror = (err) => reject(new Error('图片加载失败: ' + err.message));img.src = base64Data;});
}

关于返回黑图的原因非常多,比如浏览器兼容性、canvas 上下文复杂度等,而且还有些概率性。遇到这种情况,没必要重试 toDataURL() ,结果一般还是不对,而是要重新绘制 canvas

介绍一种必现的方法:当执行canvas.toDataURL()时,把当前浏览器页签切至后台

主要因浏览器对后台标签页的资源限制:后台页面的渲染管线会被暂停或降级,导致 Canvas 内容未更新;同时,浏览器可能主动释放 GPU 资源或清除帧缓冲区,且出于安全隐私考虑,会强制返回黑色图片以避免后台窃取敏感内容。

参考该方法,以便测试和定位实际业务问题。

http://www.dtcms.com/wzjs/364596.html

相关文章:

  • 做淘宝客个人网站微营销平台系统
  • 如何登陆工商局网站做变更千锋培训机构官网
  • 太原建设网站制作怎么做网站优化排名
  • 建一个商城型网站青岛官网优化
  • 淘宝网站建设多少钱朋友圈广告30元 1000次
  • 沧州网站建设公司翼马可以全部免费观看的软件
  • 佛山网站优化推广方案58同城网站推广
  • 做企业网站的公司徐州网站建设方案优化
  • 淘宝网站建设步骤福州网站seo公司
  • 做网站下载功能湖南seo快速排名
  • 网站2个页面做首页武汉百度推广多少钱
  • 企业网站做凭安认证有用吗seo简单速排名软件
  • 可信网站身份认证外贸推广平台怎么做
  • 内蒙古两学一做网站seo关键词优化推广
  • 网站建设推广哪家专业网站改进建议有哪些
  • 中国全案设计联盟郴州seo外包
  • 网站建设衤金手指花总公司注册流程
  • 鄂州网站设计公司seo优化排名易下拉软件
  • 合肥建设局网站首页抖音搜索seo代理
  • 钟落潭有没有做网站的整站seo技术搜索引擎优化
  • 龙华网站的建设黄冈网站推广厂家
  • 中国建设银行湖南分行官网站站长统计性宝app
  • 网站建设的原则现在感染症状有哪些
  • 做货代的可以在哪些网站打广告5151app是交友软件么
  • 搞笑图片网站源码最近一周新闻大事
  • 芜湖酒店网站建设百度首页排名优化多少钱
  • 什么信息发布型网站百度竞价渠道代理商
  • 购物网站建设公司凡科建站小程序
  • 台州品牌网站建设看啥网一个没有人工干预的网
  • 电子商务网站的特点湖人队最新消息