ModelHandle/source/io/bufferutils.js
2021-03-29 15:23:09 +02:00

63 lines
1.4 KiB
JavaScript

OV.ArrayBufferToUtf8String = function (buffer)
{
let decoder = new TextDecoder ('utf-8');
return decoder.decode (buffer);
};
OV.ArrayBufferToAsciiString = function (buffer)
{
let text = '';
let bufferView = new Uint8Array (buffer);
for (let i = 0; i < bufferView.byteLength; i++) {
text += String.fromCharCode (bufferView[i]);
}
return text;
};
OV.AsciiStringToArrayBuffer = function (str)
{
let buffer = new ArrayBuffer (str.length);
let bufferView = new Uint8Array (buffer);
for (let i = 0; i < str.length; i++) {
bufferView[i] = str.charCodeAt (i);
}
return buffer;
};
OV.Utf8StringToArrayBuffer = function (str)
{
let encoder = new TextEncoder ();
return encoder.encode (str);
};
OV.Base64DataURIToArrayBuffer = function (uri)
{
let dataPrefix = 'data:';
if (!uri.startsWith (dataPrefix)) {
return null;
}
let mimeSeparator = uri.indexOf (';');
if (mimeSeparator === -1) {
return null;
}
let bufferSeparator = uri.indexOf (',');
if (bufferSeparator === -1) {
return null;
}
let mimeType = uri.substr (dataPrefix.length, mimeSeparator - 5);
let base64String = atob (uri.substr (bufferSeparator + 1));
let buffer = new ArrayBuffer (base64String.length);
let bufferView = new Uint8Array (buffer);
for (let i = 0; i < base64String.length; i++) {
bufferView[i] = base64String.charCodeAt (i);
}
return {
mimeType : mimeType,
buffer : buffer
};
};