Ankündigung

Einklappen
Keine Ankündigung bisher.

php-Ausgabe in Bilddatei?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php-Ausgabe in Bilddatei?

    Hi Ihr,

    ich habe mal wieder eine (wahrscheinlich blöde) Frage:

    Ich habe auf der einen Seite ein kleines php-srcipt, mit dem ich die wetter-api von wetter.com bediene und mir das lokale Wetter für meinen Ort "aufbereite".
    Auf der anderen Seite steht ein Raspberry mit XIBO, einer OpenSource-DigitalSignage-Lösung. D.h. auf dem angeschlossenen HMDI-Bildschirm sind drei Regionen, unten laufen News als Laufband, oben links Bilder im Verhältnis 1280x800. Rechts daneben habe ich noch eine weitere Region, in der die Wetterdaten angezeigt werden. Rechteckigt, hochkant. Aus irgendeinem Grund funktioniert dies sauber mit dem Raspberry und auch mit einem Windows-PC mit XIBO-Client.
    Beim Android-Client wird die Wetterscriptausgabe im Verhältnis 16:9 angezeigt - und das in einem Hochkantrechteck.
    Images wie png oder jpg werden allerdings sauber anzeigt.

    Jetzt bin ich am überlegen, ob ich es irgendwie schaffen kann, die Ausgabe des Wetterscripts in ein JPG oder png auszugeben. Das Script würde ich mehrmals per Cronjob starten und hätte dann an einer Stelle auf dem Webserver das Bild mit den aktualisierten Wetterdaten. Versteht Ihr, was ich meine?

    Geht das überhaupt, vielleicht so ähnlich, wie ich eine Scriptausgabe in eine Excel-Datei oder eine Mail schicken kann?

    Viele Fragen, Kopf leer...

    Viele Grüße

    Klaus


  • #2
    Zitat von Teddyklaus Beitrag anzeigen
    Versteht Ihr, was ich meine?
    Nein. Alles unwichtige weglassen und dafür nochmal dein Vorhaben und deine Frage/Problem genauer erläutern?

    Kommentar


    • #3
      Keine Ahnung, ob ich Dich richtig verstehe, aber falls doch, benötigst Du
      PHP-Code:
      header 'Content-Type: image/jpeg;' ); // oder image/png, je nach Vorhaben 
      und ein paar kleine Funktionen der GDLibrary
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        OK, Danke für die Antworten! Dann verkürze ich mal...

        Wetter für Emsdetten und WP-Kurse

        Das sind die beiden Problemfälle.

        Ich möchte die beiden Scripts gern per Cron aufrufen und die Ausgabe des Scripts auf dem Webserver in ein PNG oder JPG ausgeben.

        Viele Grüße

        Klaus

        Hier das Wetterscript als Source

        PHP-Code:
        <?php         
                header
        ('content-type: text/html; charset=utf-8');
         
                
        $ort_id "647901"//ID finden: http://de.wetter.yahoo.com/
                
        $icon_url "http://l.yimg.com/us.yimg.com/i/us/nws/weather/gr/";
         
                
        $wetter wetterdaten($ort_id$icon_url);
        ?>
        <html>
        <head>
                <meta http-equiv="cache-control" content="no-cache"> 
                <meta http-equiv="pragma" content="no-cache">
                <style type="text/css">
                        * {
                                padding: 0;
                                margin: 0;
                        }
         
                        body {
                                font-family: Trebuchet MS, Verdana, Arial, Helvetica;
                                background-color: #ffffff;
                        }
         
                        h1, h2 {
                                font: bold 24px Trebuchet MS;
                                width: 100%;
                                border: none;
                                background-color: #636363;
                                color: #ffffff;
                                text-align: center;
                                padding: 5px 0 5px 0;
                        }
         
                        div.aktuell,
                        div.vorhersage {
                                border: 1px solid #636363;
                                margin: 25px auto;
                                text-align: center;
                                background: #dedede;
                                padding: 20px;
                        }
         
                        div.aktuell {
                                background: #dedede url(<?php echo $wetter[0]['icon'];?>) no-repeat 20px 10px;                        
                        }
         
                        div.vorhersage#heute {
                                background: #dedede url(<?php echo $wetter[1]['icon'];?>) no-repeat 20px 10px;                        
                        }
         
                        div.vorhersage#morgen {
                                background: #dedede url(<?php echo $wetter[2]['icon'];?>) no-repeat 20px 10px;                        
                        }
         
                        div.aktuell span,
                        div.vorhersage span {
                                font-size: 16pt;
                                display: block;
                                text-align: right;
                                color: #333;
                        }
         
                        div.aktuell span.temp {
                                font-size: 64pt;
                                font-weight: bold;                                
                                color: #000;
                        }
         
                        div.aktuell span.zustand {
                                font-size: 26pt;
                                font-weight: normal;        
                                margin-top: -20px;
                                color: #000;
                        }
         
                        div.vorhersage span.temp {
                                font-size: 36pt;
                                font-weight: normal;                
                                margin-top: 10px;                                
                                color: #000;
                        }
         
                        div.vorhersage span.zustand {
                                font-size: 18pt;
                                font-weight: normal;        
                                margin-top: -15px;                                
                                color: #000;
                        }
         
                        div#quelle {
                                width: 100%;
                                font-size: 10pt;
                                text-align: center;
                                clear: both;
                                padding-top: 15px;
                        }
                </style>
         
        </head>
        <body>

                <h1>Das Wetter in Emsdetten</h1>
                <div class="aktuell">
                                <span class='tag'>Aktuell</span>
                                <span class='temp'><?php echo $wetter[0]['temperatur']; ?>&deg;C</span><br/> 
                                <span class='zustand'><?php echo $wetter[0]['zustand']; ?></span>
                </div>
                <div class="vorhersage" id="heute">
                                <span class='tag'>Heute</span>
                                <span class='temp'><?php echo $wetter[1]['tief']; ?>&deg;C - <?php echo $wetter[1]['hoch']; ?>&deg;C</span><br/> 
                                <span class='zustand'><?php echo $wetter[1]['zustand']; ?></span>
                </div>
                <div class="vorhersage" id="morgen">
                                <span class='tag'>Morgen</span>
                                <span class='temp'><?php echo $wetter[2]['tief']; ?>&deg;C - <?php echo $wetter[2]['hoch']; ?>&deg;C</span><br/> 
                                <span class='zustand'><?php echo $wetter[2]['zustand']; ?></span>
                </div>
                <div id="quelle">Quelle: Yahoo Weather API</div>
        </body>
        </html>
         
        <?php
        function wetterdaten($w,$imgurl) {
                
        $xmlurl "http://weather.yahooapis.com/forecastrss?w=" $w "&u=c";
         
                
        // Daten von API laden und in SimpleXML konvertieren
                
        $xml file_get_contents($xmlurl);
                
        $xml str_replace("yweather:""yweather_"$xml);
                
        $api simplexml_load_string(utf8_encode($xml));
                
        $wetter = array();
         
                
        // Aktuelles Wetter
                
        $wetter[0]['zustand'] = yahoo_code2text($api->channel->item->yweather_condition->attributes()->code);
                
        $wetter[0]['icon'] = $imgurl yahoo_code2icon($api->channel->item->yweather_condition->attributes()->code);
                
        $wetter[0]['temperatur'] = $api->channel->item->yweather_condition->attributes()->temp;
         
                
        //Vorhersage f&uuml;r heute und morgen        
                
        $wetter[1]['zustand'] = yahoo_code2text($api->channel->item->yweather_forecast[0]->attributes()->code);
                
        $wetter[1]['icon'] = $imgurl yahoo_code2icon($api->channel->item->yweather_forecast[0]->attributes()->code);
                
        $wetter[1]['tief'] = $api->channel->item->yweather_forecast[0]->attributes()->low
                
        $wetter[1]['hoch'] = $api->channel->item->yweather_forecast[0]->attributes()->high;
         
                
        $wetter[2]['zustand'] = yahoo_code2text($api->channel->item->yweather_forecast[1]->attributes()->code);
                
        $wetter[2]['icon'] = $imgurl yahoo_code2icon($api->channel->item->yweather_forecast[1]->attributes()->code);
                
        $wetter[2]['tief'] = $api->channel->item->yweather_forecast[1]->attributes()->low
                
        $wetter[2]['hoch'] = $api->channel->item->yweather_forecast[1]->attributes()->high;
         
                return 
        $wetter;
        }
         
        function 
        yahoo_code2text($code) {
                
        $text "";
                switch (
        $code) {
                        case 
        $text="Sturm"; break; //tornado
                        
        case $text="Sturm"; break; //tropical storm
                        
        case $text="Sturm"; break; //hurricane
                        
        case $text="Schweres Gewitter"; break; //severe thunderstorms
                        
        case $text="Gewitter"; break; //thunderstorms
                        
        case $text="Schneeregen"; break; //mixed rain and snow
                        
        case $text="Regen / Graupel"; break; //mixed rain and sleet
                        
        case $text="Schnee / Graupel"; break; //mixed snow an sleet
                        
        case $text="Gefrierender Nieselregen"; break; //freezing drizzle
                        
        case $text="Nieselregel"; break; //drizzle
                        
        case 10 $text="Eisregen"; break; //freezing rain
                        
        case 11 $text="Schauer"; break; //showers
                        
        case 12 $text="Schauer"; break; //showers
                        
        case 13 $text="Schneeb&ouml;en"; break; //snow flurries
                        
        case 14 $text="Leichter Schneefall"; break; //light snow showers
                        
        case 15 $text="Schneefall"; break; //blowing snow
                        
        case 16 $text="Schneefall"; break; //snow
                        
        case 17 $text="Hagel"; break; //hail
                        
        case 18 $text="Graupel"; break; //sleet
                        
        case 19 $text="nebelig"; break; //dust
                        
        case 20 $text="nebelig"; break; //foggy
                        
        case 21 $text="Nebel"; break; //haze
                        
        case 22 $text="nebelig"; break; //smoky
                        
        case 23 $text="st&uuml;rmisch"; break; //blustery
                        
        case 24 $text="windig"; break; //windy
                        
        case 25 $text="frostig"; break; //cold
                        
        case 26 $text="bew&ouml;lkt"; break; //cloudy
                        
        case 27 $text="meistens bew&ouml;lkt"; break; //mostly cloudy (night)
                        
        case 28 $text="meistens bew&ouml;lkt"; break; //mostly cloudy (day)
                        
        case 29 $text="teils bew&ouml;lkt"; break; //partly cloudy (night)
                        
        case 30 $text="teils bew&ouml;lkt"; break; //partly cloudy (day)
                        
        case 31 $text="klar"; break; //clear (night)
                        
        case 32 $text="sonnig"; break; //sunny
                        
        case 33 $text="heiter"; break; //fair (night)
                        
        case 34 $text="heiter"; break; //fair (day)
                        
        case 35 $text="Regen / Hagel"; break; //mixed rain and hail
                        
        case 36 $text="Hitze"; break; //hot
                        
        case 37 $text="vereinzelte Gewitter"; break; //isolated thunderstorms
                        
        case 38 $text="vereinzelte Gewitter"; break; //scattered thunderstorms
                        
        case 39 $text="vereinzelte Gewitter"; break; //scattered thunderstorms
                        
        case 40 $text="vereinzelte Schauer"; break; //scattered showers
                        
        case 41 $text="starker Schneefall"; break; //heavy snow
                        
        case 42 $text="vereinzelte Schneeschauer"; break; //scattered snow showers
                        
        case 43 $text="starker Schneefall"; break; //heavy snow
                        
        case 44 $text="teils bew&ouml;lkt"; break; //partly cloudy
                        
        case 45 $text="Gewitter"; break; //thundershowers
                        
        case 46 $text="Schneeschauer"; break; //snow showers
                        
        case 47 $text="Gewitter"; break; //isolated thundershowers
                        
        case 3200 $text=""; break; //not available
                
        }
                return 
        $text;
        }
         
        function 
        yahoo_code2icon($code) {
                
        $icon $code "d.png";
                return 
        $icon;
        }
         
        ?>

        Kommentar


        • #5
          Schnapp Dir halt die Daten ( file_get_contents / cURL ) und füge sie bspw. mit der GDlib in ein Bild-Objekt ein.
          Eine direkte Konvertierung einer HTML-Website in ein Bildformat ist mir nicht bekannt, aber es gäbe einen Umweg über PDF: http://buffernow.com/html-to-image-php-script/
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            es gäbe einen Umweg über PDF: http://buffernow.com/html-to-image-php-script/
            Vielen Dank, Arne

            das ist genau das was ich suche, auch die kaskadierte Select-Box

            Leider kann ich dort liken, was ich will, ich bekomme die Scripts nicht zum download angeboten (Ich weiss, sorry für OffTopic...)

            Gruß
            Klaus

            Kommentar


            • #7
              Ist doch alles verlinkt, über der bildlichen Darstellung...
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Beim Android-Client wird die Wetterscriptausgabe im Verhältnis 16:9 angezeigt - und das in einem Hochkantrechteck.
                Images wie png oder jpg werden allerdings sauber anzeigt.

                Jetzt bin ich am überlegen, ob ich es irgendwie schaffen kann, die Ausgabe des Wetterscripts in ein JPG oder png auszugeben.
                Hmm, statt das Problem anzugehen, willst DU es umgehen und dabei ein weiteres Problem schaffen?
                Geht das überhaupt, vielleicht so ähnlich, wie ich eine Scriptausgabe in eine Excel-Datei oder eine Mail schicken kann?
                Zusammenhang?
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Hmm, statt das Problem anzugehen, willst DU es umgehen und dabei ein weiteres Problem schaffen?
                  Hi Nikosch,

                  naja, das umgehen hat auch weitere Vorteile. Bei den Xibo-Clients lädt eine Webpage immer langsamer als ein Image, weil der Code nicht erst vom Client interpretiert werden muss (nehm ich mal an...)

                  Der Zusammenhang mit Excel oder Mail ergibt sich für mich, weil ich über Cronjobs mehrfach Sripte eine Tabelle per Mail verschicke und so auch regelmäßig auf dem Server ein Excelsheet erstelle. Und nun dachte ich, dass es mit der "unattended" Bilderstellung eben auch so geht.

                  Arne,

                  man kann sich die Scripte auf der Seite "irgendwo" downloaden. Was bei Deinem Link zu Download steht ist die html2pdf-Klasse und das imagick

                  Viele Grüße
                  Klaus

                  Kommentar


                  • #10
                    Arne,

                    man kann sich die Scripte auf der Seite "irgendwo" downloaden. Was bei Deinem Link zu Download steht ist die html2pdf-Klasse und das imagick
                    Das ist auch alles, was Du dafür brauchst!
                    Wenn es daran scheitert, 10 Zeilen Code eigenständig umzusetzen und zu verstehen, empfinde ich lediglich Betroffenheit...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      Das ist auch alles, was Du dafür brauchst!
                      Wenn es daran scheitert, 10 Zeilen Code eigenständig umzusetzen und zu verstehen, empfinde ich lediglich Betroffenheit...
                      Nein, ach quatsch... Das ist ja kein Problem. Das habe ich umgesetzt, ich muss nur auf dem Webserver noch imagick installieren. Aber es gab dort ein anderes interessanten Ajax-Script, was eben nicht als Code, sondern nur mit den Funktionen des Scripts beschrieben ist.

                      Wenn ich die erste Sache nicht könnte, würde ich das programmieren "drangeben"...

                      Nix für ungut

                      Gruß
                      Klaus

                      Kommentar

                      Lädt...
                      X