/**

 * @description: base64 to blob

 */

export function dataURLtoBlob(base64Buf: string): Blob {

  const arr = base64Buf.split(',');

  const typeItem = arr[0];

  const mime = typeItem.match(/:(.*?);/)![1];

  const bstr = atob(arr[1]);

  let n = bstr.length;

  const u8arr = new Uint8Array(n);

  while (n--) {

    u8arr[n] = bstr.charCodeAt(n);

  }

  return new Blob([u8arr], { type: mime });

}



/**

 * img url to base64

 * @param url

 */

export function urlToBase64(url: string, mineType?: string): Promise<string> {

  return new Promise((resolve, reject) => {

    let canvas = document.createElement('CANVAS') as Nullable<HTMLCanvasElement>;

    const ctx = canvas!.getContext('2d');



    const img = new Image();

    img.crossOrigin = '';

    img.onload = function () {

      if (!canvas || !ctx) {

        return reject();

      }

      canvas.height = img.height;

      canvas.width = img.width;

      ctx.drawImage(img, 0, 0);

      const dataURL = canvas.toDataURL(mineType || 'image/png');

      canvas = null;

      resolve(dataURL);

    };

    img.src = url;

  });

}