Image Test

Es geht darum, Images, die auf einem Server dynamisch generiert werden [dh. nicht als File vorliegen, denn dann müßte man nur das src-Attribut setzen] auf einem client als <img> Tag anzuzeigen. (Sie sollen per CGI-Script bzw. WebSocket übertragen werden).
Alternative wäre, das Bild pixelweise zu übertragen und in einem Canvas anzuzeigen (größere zu übertragende Datenmenge).
Hier wird als Test ein normales Image-File mit XMLHttpRequest geladen (was normalerweise keinen Sinn macht).

Der 2. Test benutzt "WebSocketServer.java" (ICGEM/potato) auf port 8080, der das Bild dynamisch generiert
geoid


Javascript-Code
function async_load_image() { // asynchrones Lesen eines Files als 'arraybuffer' vom aktuellen server  
  var fname = "/ICGEM/potato/Geoid-eigen-6c-Ellipsoid.jpg"; 
  var areq = new XMLHttpRequest(); 
  areq.open("POST",fname,true); //  true = asynchron,
  areq.responseType = "arraybuffer"; // Typ setzen auf binär
  areq.onload = function(e) { 
    if (areq.status != 200) alert("Fehler beim Laden von "+fname); // meist 500=Internal Server-Fehler
    var arbuf = areq.response; // = [object ArrayBuffer] (nicht 'responseText'!)
    console.log(arbuf+" mit "+arbuf.byteLength+" byte");
    var cbuf = new Uint8Array(arbuf); // ein 'View' auf arbuf
    var b64 = encode(cbuf); // window.btoa() funzt nur für Strings
    // b64 = window.btoa(areq.responseText); // gibts nicht
    console.log("kodiert mit "+b64.length+" chars");
    document.getElementById('img_id').src = "data:image/jpg;base64,"+b64;
  }
  areq.send();
}