Wie funktioniert Blob: Http?



  • Hallo Leute,

    ich habe eine Gerät(Kamera) welches Bilder via Blob:Http via Webserver im Browser anzeigen kann. Dafür wird ein properitäres Image ViewControl verwendet, welche die Bilder anzeigt.
    Dabei wird sehe ich im Debugger der Chrome Browsers, dass das Frontend :

    diese Request getätigt werden:

    blob:http://192.168.0.33/ded37460-ecb5-4ffe-a160-00c5eb07a6fc
    

    und der JS code shnipped der das tut ist folgender:

    this.value = value;
                   try {
                       var blob = new Blob([value.result || value]);
                       this.blob = blob;
                       if (this.image.src) {
                           window.URL.revokeObjectURL(this.image.src);
                       }
                       this.realImage = true;
                       this.imageLoaded = false;
                       this.image.src = window.URL.createObjectURL(blob);
                       this.status = "ok";
                   }
                   catch (e) {
                       console.error("Image control '%s' got invalid data from core.", this.options.name);
                       this.status = "invalid";
                   }
               }
    

    Nun möchte ich genau das Selbe , also diese Blob-daten (image) in einem c# client und einem HttpRequest abfragen, finde aber im netz nichts derartiges mit .net core..

    kann mir jemand helfen? 🙂

    Danke und Schöne Feiertage euch



  • Vllt. hilft Reading a BLOB that is appended to HTTP extension using C#?
    Ganz unten ist ein Link zu What is the “blob:http://” prefix and where can I learn more about this?
    Also, so wie ich das verstehe, geht es nicht direkt, sondern du mußt per JS (Ajax) das Objekt umwandeln.

    PS: Meintest du mit "shnipped" "snippet"?



  • Hi Th69... ja meinte snippet..

    ja habe auch mal gelesen, so wie es aussieht kann "nur" ein browser solch ein Objekt erzeugen und konsumieren... aber das muss doch auch so gehen.. jemand noch ideen... ob dies Mechanismus auch ohne JS ajax und browser geht?



  • @SoIntMan sagte in Wie funktioniert Blob: Http?:

    und der JS code shnipped der das tut ist folgender:

    this.value = value;
                   try {
                       var blob = new Blob([value.result || value]);
                       this.blob = blob;
                       if (this.image.src) {
                           window.URL.revokeObjectURL(this.image.src);
                       }
                       this.realImage = true;
                       this.imageLoaded = false;
                       this.image.src = window.URL.createObjectURL(blob);
                       this.status = "ok";
                   }
                   catch (e) {
                       console.error("Image control '%s' got invalid data from core.", this.options.name);
                       this.status = "invalid";
                   }
               }
    

    Du musst schauen wo die value herkommt die von diesem Script verarbeitet wird.
    So wie ich den Code verstehe ist da das gesamte Bild drinnen, und der Rest zeigt das bloss noch an.

    Ansonsten kannst du gucken ob du eine Doku zu der Kamera findest - vielleicht steht da irgendwas drin.



  • Frohes Neues erst mal;)

    Hallo husterbear , ja da das is das ganze bild drin... aber ich würde gern das ganz in .Net machen ohne "browser"

    @hustbaer sagte in Wie funktioniert Blob: Http?:

    this.image.src = window.URL.createObjectURL(blob);

    aber diese Zeile hier, mit dem zugehöringe "new Blob" is wohl ein mechanismus der nur "Browser" können wie ich recheriert habe...

    ich will aber dass das auch ein eifnacer Http Client in c# kann.. jemand ne idee?;)



  • Schau dir Image.FromStream an. Damit oder etwas ähnlichem müsstest du das hinbekommen.



  • Besorg dir die value (wie auch immer das geht - das ist ja aus deinem Beispiel nicht ersichtlich), schreib sie in ein File, lade das File als Bild.

    Davon abgesehen sollte es auch möglich sein den Umweg über das File zu vermeiden. Wie das mit .NET geht weiss ich nicht auswendig*, aber das sollte sich herausfinden lassen. Der erste Schritt ist aber auf jeden Fall das Ding erstmal mit Umweg über ein File zum Laufen zu bekommen.

    *: Es könnte sein dass es einfach reicht der Source/Image Property des Image-Controls ein Byte-Array bzw. einen Memory-Stream zuzuweisen.



  • @SoIntMan sagte in Wie funktioniert Blob: Http?:

    ich will aber dass das auch ein eifnacer Http Client in c# kann.. jemand ne idee?;)

    Das wird leider nichts, siehe hier.

    Ich wäre auch für den Vorschlag von @hustbaer.
    Ansonsten wäre für mich interessant zu wissen, ob der Hersteller Deiner Kamera erwähnt, ob Fotos auch dauerhaft zwischengespeichert werden (ggf. bei Windows irgendwo im AppData) oder ob Du Möglichkeiten hast, den Code anzupassen?



  • Achso statt dem blob:http mechanismus das raw bild runterladen, das meint ihr!?
    Wäre eine Alternative... das is wahr. Dachte es gibt dennoch die Möglichkeit blob:http url diret in eienm c # http client zu implementieren (so wie es eben der browser inter handeld)



  • @SoIntMan sagte in Wie funktioniert Blob: Http?:

    Achso statt dem blob:http mechanismus das raw bild runterladen, das meint ihr!?

    So konkret meinte ich es nicht, aber besteht die Möglichkeit bei Deiner Kamera?
    Wenn Du einen Snapshot automatisch triggern kannst (ggf. hat das Teil ein einfaches CLI), welcher dann lokal bei Dir gespeichert wird, kannst Dir das generierte File dann auch entspannt und ohne Kopfweh mit C# holen.

    Wäre eine Alternative... das is wahr. Dachte es gibt dennoch die Möglichkeit blob:http url diret in eienm c # http client zu implementieren (so wie es eben der browser inter handeld)

    Leider nicht, ist - wie erwähnt - Browser-intern.


Anmelden zum Antworten