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

vue做网站的好处是什么论坛推广的特点

vue做网站的好处是什么,论坛推广的特点,wordpress站群是什么,品牌网站要这么做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/95092.html

相关文章:

  • 宁波网站设计公司品牌推广软文200字
  • 网站建设与维护中推广策略及推广方式
  • 陕西省住房和城乡建设厅网站刷赞网站推广免费链接
  • 自己学做网站需要学多久域名注册优惠
  • 自建房设计网站推荐网站优化服务
  • HTTPS网站做CDN加速免费网站推广2023
  • 教育教学网站建设淘宝联盟怎么推广
  • 返利网站开发代码怎么发布信息到百度
  • 网站建设拾金手指下拉搜索关键词优化
  • 适合手机浏览的wordpress主题seo内部优化具体做什么
  • 做外包胡it网站seo快排
  • 建网站设置网站首页武汉百度关键词推广
  • 中国免费素材网站网络营销的主要推广方式
  • 网站域名费用怎么做分录湖南长沙最新疫情
  • 政府网站集约化建设主持词合肥seo推广公司哪家好
  • 音乐网站开发编程语言拉人头最暴利的app
  • 做网站的图片大全seo网络优化招聘信息
  • 武汉网站建设是什么seo外包公司兴田德润
  • 做网站卖机器常用的网络营销工具
  • 网站title在哪里网站策划是做什么的
  • dreamware怎么做网站无锡网站排名公司
  • 查询建设公司业绩网站深圳seo顾问
  • 兰州网站建设100化妆品软文推广范文
  • 武汉网络推广霸屏武汉网站开发公司seo
  • 河南郑州网站推广优化排名教程
  • 天津哪家做企业网站百度指数属于行业趋势及人群
  • 做网站的成本有多少网络营销是以什么为中心
  • 网站建设最低要求百度电话客服24小时
  • 怎样下载模板做网站黑帽seo技巧
  • 彩票网站开发. 极云网络营销的现状