From cf4c2ba909e3da40d415bf2d14792524aed426fb Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 30 Sep 2017 13:58:54 -0700 Subject: [PATCH] Use createObjectURL in clase of data URI This is cheaper and saves some memory. As suggested by @nkwiatek. --- js/skinParser.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/js/skinParser.js b/js/skinParser.js index 229da9d9..ef3f7826 100644 --- a/js/skinParser.js +++ b/js/skinParser.js @@ -2,15 +2,13 @@ import SKIN_SPRITES from "./skinSprites"; import JSZip from "../node_modules/jszip/dist/jszip"; // Hack import { parseViscolors, parseIni } from "./utils"; -const bmpUriFromBase64 = data64 => `data:image/bmp;base64,${data64}`; - -const genImgNodeFromUri = uri => +const genImgFromBlob = blob => new Promise(resolve => { const img = new Image(); img.onload = () => { resolve(img); }; - img.src = uri; + img.src = URL.createObjectURL(blob); }); // "Promisify" processBuffer @@ -44,12 +42,11 @@ function getSpriteUrisFromImg(img, sprites) { } async function genSpriteUrisFromFilename(zip, fileName) { - const base64 = await genFileFromZip(zip, fileName, "bmp", "base64"); - if (!base64) { + const blob = await genFileFromZip(zip, fileName, "bmp", "blob"); + if (!blob) { return {}; } - const uri = bmpUriFromBase64(base64); - const img = await genImgNodeFromUri(uri); + const img = await genImgFromBlob(blob); const spriteUris = getSpriteUrisFromImg(img, SKIN_SPRITES[fileName]); return spriteUris; }