UNPKG

@phaserjs/phaser

Version:
25 lines (24 loc) 986 B
/** * @author Niklas von Hertzen (https://github.com/niklasvh/base64-arraybuffer) * @author Richard Davey <rich@photonstorm.com> * @copyright 2020 Photon Storm Ltd. * @license {@link https://opensource.org/licenses/MIT|MIT License} */ export function ArrayBufferToBase64(arrayBuffer, mediaType) { const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; const bytes = new Uint8Array(arrayBuffer); const len = bytes.length; let base64 = mediaType ? "data:" + mediaType + ";base64," : ""; for (let i = 0; i < len; i += 3) { base64 += chars[bytes[i] >> 2]; base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; base64 += chars[bytes[i + 2] & 63]; } if (len % 3 === 2) { base64 = base64.substring(0, base64.length - 1) + "="; } else if (len % 3 === 1) { base64 = base64.substring(0, base64.length - 2) + "=="; } return base64; }