Bei MDN können Sie einen Überblick über alle verfügbaren ArrayBufferView
Subklassen finden:
Type | Size | Description | Equivalent C type
-------------+------+---------------------------------------+------------------
Int8Array | 1 | 8-bit twos complement signed integer | signed char
Uint8Array | 1 | 8-bit unsigned integer | unsigned char
Int16Array | 2 | 16-bit twos complement signed integer | short
Uint16Array | 2 | 16-bit unsigned integer | unsigned short
Int32Array | 4 | 32-bit twos complement signed integer | int
Uint32Array | 4 | 32-bit unsigned integer | unsigned int
Float32Array | 4 | 32-bit IEEE floating point number | float
Float64Array | 8 | 64-bit IEEE floating point number | double
Grundsätzlich ist diese Listen, welche Speicherplätze jedes Element des Arrays besetzen würde und wenn es eine einfache Zahl oder eine FP-Zahl. Ich bin nicht sicher, welche Sprachen Sie kennen, aber wenn es auch Java abdeckt, dann ist es im Grunde die selbe Wahl, wie Sie auf byte[]
, short[]
, int[]
, float[]
und double[]
machen würden (Java wird immer unterzeichnet, so dass Teil spielt keine Rolle).
Wir wissen, binäre Daten wie Bilder wird in der Regel als Byte-Array dargestellt. Ein short/int/long-Array kann auch, aber das ist eine Verschwendung von Speicherplatz. Wenn Sie ein 100-KB-Bild (beachten Sie, dass "B" für Byte steht, was 8 Bits entspricht) in einem int-Array anstelle eines Byte-Arrays speichern, würde es 400 KB Speicher belegen, was eine Verschwendung von 300 KB bedeutet. Der kleinste, Int8Array
, würde also bereits hinsichtlich des Speicherplatzes ausreichen. Wenn Sie schon einmal programmatisch mögen es — durchqueren, die in diesem Fall — als unsigned Array sehr unwahrscheinlich ist, dann können Sie für die Uint8Array
stattdessen entscheiden, wo jedes Element Werte 0
-255
statt Werte -128
zu 127
hält.
Hier ist ein Copy'n'Paste'n'runnable Kickoff-Beispiel, das eine Image-Datei vom Server herunterlädt, speichert es in den temporären lokalen Speicherplatz und präsentiert es als im Körper (kleine jQuery ist dafür erforderlich Teil). Dieses Beispiel geht davon aus, dass die image.png
Datei in der gleichen Basis Ordner wie die JS befindet (oder HTML, bei JS ist inlined) Datei heruntergeladen worden ist:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 1024*1024, startDownload, errorHandler);
var errorHandler = function(error) {
console.log('FS error: ' + error);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'image.png', true);
xhr.responseType = 'arraybuffer';
function startDownload(fileSystem) {
xhr.onload = function(event) {
var content = new Int8Array(this.response);
fileSystem.root.getFile('/image.png', { 'create': true }, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(event) {
$('body').append('<p>Image successfully downloaded:</p>')
.append('<p><img src="' + fileEntry.toURL() + '"/></p>');
};
var blob = new Blob([content], { type: 'image/png' });
fileWriter.write(blob);
}, errorHandler);
});
}
xhr.send();
}
Hinweis, wie der current Zustand, das funktioniert, Nur in Chrome
Wie wäre es mit JSON? –