Как преобразовать двоичную строку изображения PNG в base64, не записывая ее на диск? - PullRequest
0 голосов
/ 23 апреля 2020

Я успешно передал изображение в виде двоичной строки из кукловодов * Функция 1001 * вернулась к node.js, используя:

async function getBinaryString(url) {
    return new Promise(async (resolve, reject) => {
        const reader = new FileReader();
        const response = await window.fetch(url)
        const data = await response.blob();
        reader.readAsBinaryString(data);
        reader.onload = () => resolve(reader.result);
        reader.onerror = () => reject('Error occurred while reading binary string');
    });
}

Я могу сохранить его с помощью:

fs.writeFileSync(“image.png”, new Buffer.from(binaryString, "binary"), function (err) { });

Но теперь я sh хочу преобразовать это PNG изображение в base64, не сохраняя его сначала в файл, потому что я буду загружать его на другой сервер. Если я сохраню его в файл, я могу сделать следующее:

function base64Encode(file) {
    const bitmap = fs.readFileSync(file);                 
    return new Buffer.from(bitmap).toString('base64');
}

Как пропустить часть сохранения файла и получить правильные данные base64 для моего PNG? Я пытался передать двоичную строку в new Buffer.from(binaryString).toString('base64'), но мне не удалось сохранить ее как рабочую PNG.

1 Ответ

0 голосов
/ 23 апреля 2020

Это на самом деле не гарантирует ответа на мой собственный вопрос, но @Jacob напомнил мне, что я забыл попробовать:

new Buffer.from(binaryString, 'binary').toString('base64');

с параметром "binary", который решил проблему, и PNG было правильно снова отформатирован при переходе от base64 к файлу или изображению в браузере.

Может быть, этот код может быть повторно использован другим пользователем-кукловодом, мне потребовалось некоторое время, чтобы придумать и найти фрагменты в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...