项目中图片 url、base64(dataURL)转化

😲 项目中图片 url、base64(dataURL)转化

1、url转base64

http://124.1.2.2:4444/load/8/c -> data:image/png;base64 …

// 方法
const urlToBase64 = (url) => {
  return new Promise ((resolve,reject) => {
    let image = new Image();
    image.onload = function() {
      let canvas = document.createElement('canvas');
      canvas.width = this.naturalWidth;
      canvas.height = this.naturalHeight;
      // 将图片插入画布并开始绘制
      canvas.getContext('2d').drawImage(image, 0, 0);
      // result
      let result = canvas.toDataURL('image/png')
      resolve(result);
    };
    // CORS 策略,会存在跨域问题https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror
    image.setAttribute("crossOrigin",'Anonymous');
    image.src = url;
    // 图片加载失败的错误处理
    image.onerror = () => {
      reject(new Error('图片流异常'));
    };
  })
}

const ArticleItemRight = memo(function (props) {
  const [imgBase64, setImgBase64] = useState('');

  urlToBase64(item.coverInfo.imgURL).then(res => {
    // 转化后的base64图片地址
    // console.log('base64', res)
    setImgBase64(res)
  })

return<div className={'item-img'}>
          {/* 如果转换的 base64 太大还未加载出来,用其他网络图片代替显示一下 */}
          <img src={imgBase64 || 'https://gw.alipayobjects.com/zos/antfincdn/aPkFc8Sj7n/method-draw-image.svg'}
               alt=""
               loading={'lazy'}
               className={'img'}
               onLoad={handleImgLoad}/>
        </div>
  )
})

export default ArticleItemRight
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值