Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. [gelöst] Datenpunkt mit base64 in Bilddatei schreiben

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [gelöst] Datenpunkt mit base64 in Bilddatei schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • accessburn
      accessburn last edited by accessburn

      Ich google mir de Wolf, weiß denn jemand wie das geht?

      Ich möchte einfach nur den Datenpunkt, der ein Bild in base64 enthält in eine Bilddatei schreiben.

      Grüße,
      Toby

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @accessburn last edited by OliverIO

        @accessburn

        es fehlen leider ein paar informationen.
        im browser? auf dem server?
        welches bildformat?

        hier mal ein beispie für png und node

        var base64Data = base64bild.replace(/^data:image\/png;base64,/, "");
        
        require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
          console.log(err);
        });
        
        accessburn 1 Reply Last reply Reply Quote 0
        • accessburn
          accessburn @OliverIO last edited by

          @oliverio Okay, sorry...

          Ich habe einen Datenpunkt mit einer Grafik als base64 und ich möchte ihn auf dem Server direkt speichern, also quasi unter userfiles...

          Und würde das als Blockly gehen?

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @accessburn last edited by

            @accessburn

            von blockly hab ich keine ahnung.
            aber ich denke, das die formatangabe beim speichern der datei bei blockly direkt nicht enthalten ist.
            das muss man dann in einem funktionsblock als javascript eintragen

            1 Reply Last reply Reply Quote 0
            • accessburn
              accessburn last edited by

              Okay, ich komme null weiter...

              data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...
              

              Das steht im Datenpunkt und ich möchte ein Script haben dass mir beim ändern des Datenpunkts, das Bild daraus auf das Laufwerk legt. Kann mir da jemand helfen?

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO last edited by OliverIO

                @accessburn

                https://stackoverflow.com/questions/6926016/how-can-i-save-a-base64-encoded-image-to-disk

                let imgstr = getState("datepunktidmitbild");
                var base64Data = imgstr.rawBody.replace(/^data:image\/png;base64,/, "");
                require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
                  console.log(err);
                });
                
                accessburn 1 Reply Last reply Reply Quote 0
                • accessburn
                  accessburn @OliverIO last edited by

                  Danke @oliverio , habe ich einfach mal kopiert und die werte angepasst.
                  76938d8c-b342-4f18-97dc-7499596aea69-image.png

                  haus-automatisierung OliverIO 2 Replies Last reply Reply Quote 0
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @accessburn last edited by haus-automatisierung

                    @accessburn

                    const value = getState('mihome-vacuum.0.cleanmap.map64').val;
                    const base64str = value.replace(/^data:image\/png;base64,/, '');
                    const base64data = Buffer.from(base64str, 'base64');
                    
                    writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                        if (!err) {
                            console.info('File written');
                        } else {
                            console.error(err);
                        }
                    });
                    
                    accessburn 1 Reply Last reply Reply Quote 1
                    • accessburn
                      accessburn @haus-automatisierung last edited by

                      @haus-automatisierung

                      on({ id: [].concat(['mihome-vacuum.0.cleanmap.map64']), change: 'ne' }, async (obj) => {
                      
                          const value = getState('mihome-vacuum.0.cleanmap.map64').val;
                          const base64str = value.replace(/^data:image\/png;base64,/, '');
                          const base64data = Buffer.from(base64str, 'base64');
                          
                          writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                              if (!err) {
                                  console.info('File written');
                              } else {
                                  console.error(err);
                              }
                          });
                      
                        // console.error(getState('mihome-vacuum.0.cleanmap.map64').val);
                      });
                      

                      Vielen Dank, das klappte schon mal auf anhieb.
                      Macht das so Sinn mit dem "change"?

                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @accessburn last edited by haus-automatisierung

                        @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                        Macht das so Sinn mit dem "change"?

                        Ja, wenn es nur eine ID ist, würde ich mir aber das Array sparen:

                        on({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {
                        

                        Und Du kannst direkt mit dem Wert arbeiten (ohne den nochmal zu holen):

                        on({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {
                            const value = obj.state.val;
                            const base64str = value.replace(/^data:image\/png;base64,/, '');
                            const base64data = Buffer.from(base64str, 'base64');
                            
                            writeFile('0_userdata.0', '/cleanmap.png', base64data, (err) => {
                                if (!err) {
                                    console.info('File written');
                                } else {
                                    console.error(err);
                                }
                            });
                        });
                        
                        accessburn 1 Reply Last reply Reply Quote 0
                        • accessburn
                          accessburn @haus-automatisierung last edited by

                          @haus-automatisierung sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                          n({ id: 'mihome-vacuum.0.cleanmap.map64', change: 'ne' }, async (obj) => {

                          Sehr cool. Danke! ♥
                          Diese Sprache beherrsche ich einfach nicht. Bin in PHP groß geworden 😉

                          haus-automatisierung 1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @accessburn last edited by

                            @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                            Bin in PHP groß geworden

                            Ja, ich auch.

                            Gerade 2 Tage lang alle PHP-Klassen des Online-Shops auf PHP 8.3 und strict types umgestellt...

                            accessburn 1 Reply Last reply Reply Quote 0
                            • accessburn
                              accessburn @haus-automatisierung last edited by

                              @haus-automatisierung
                              Na das passt ja. 🙂

                              Aber Frage, würde sich das mit Blockly umsetzen lassen?

                              haus-automatisierung 1 Reply Last reply Reply Quote 0
                              • haus-automatisierung
                                haus-automatisierung Developer Most Active @accessburn last edited by

                                @accessburn sagte in Datenpunkt mit base64 in Bilddatei schreiben:

                                würde sich das mit Blockly umsetzen lassen?

                                Zu 90%, ja.

                                1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @accessburn last edited by

                                  @accessburn

                                  ahja das rawbody hatte ich nicht entfernt

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  641
                                  Online

                                  31.6k
                                  Users

                                  79.5k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  366
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo