URL图片转base64使用,截图截不到的问题

 url 转 base64

原理: 利用canvas.toDataURL的API转化成base64

/**
 * 将给定的图片URL转换为Base64编码的字符串。
 * 如果图片加载成功,Promise将被解析为Base64编码的图片数据。
 * 如果图片加载失败(例如,由于跨域问题或无效的URL),Promise将被拒绝并抛出一个错误。
 * 
 * @param {string} url - 要转换的图片的URL。
 * @returns {Promise<string>} - 一个Promise对象,解析为Base64编码的图片数据,或在失败时拒绝。
 */
function urlToBase64(url) {
  // 返回一个Promise对象,用于异步处理图片加载和转换。
  return new Promise((resolve, reject) => {
    // 创建一个新的Image对象,用于加载图片。
    let image = new Image();

    // 当图片加载完成时触发此事件。
    image.onload = function() {
      // 创建一个Canvas元素,用于绘制图片并获取其Base64编码。
      let canvas = document.createElement('canvas');
      // 设置Canvas的宽度和高度与图片的自然尺寸相同。
      canvas.width = this.naturalWidth;
      canvas.height = this.naturalHeight;
      // 获取Canvas的2D绘图上下文,并将图片绘制到Canvas上。
      let context = canvas.getContext('2d');
      context.drawImage(image, 0, 0);
      // 将Canvas内容转换为Base64编码的PNG图片数据。
      let result = canvas.toDataURL('image/png');
      // 解析Promise,并将Base64编码的图片数据作为结果。
      resolve(result);
    };

    // 尝试设置图片的跨域策略为'Anonymous',以便在可能的情况下允许跨域访问。
    // 注意:这不会总是有效,取决于图片服务器的CORS设置。
    image.crossOrigin = 'Anonymous';

    // 设置Image对象的源为传入的URL,开始加载图片。
    image.src = url;

    // 如果图片加载失败,触发此事件。
    image.onerror = function() {
      // 拒绝Promise,并抛出一个错误,表明图片加载失败。
      reject(new Error('Failed to load image for Base64 conversion.'));
    };
  });
}

// 使用示例:
// urlToBase64('https://example.com/image.jpg')
//   .then(base64Data => {
//     console.log('Base64 encoded image:', base64Data);
//   })
//   .catch(error => {
//     console.error('Error converting URL to Base64:', error);
//   });

使用:

let imgUrL = `http://XXX.jpg`j
urlToBase64(imgUrL).then(res => {
  // 转化后的base64图片地址
  console.log('base64', res)
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值