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
Ankündigung
Einklappen
Keine Ankündigung bisher.
php-Ausgabe in Bilddatei?
Einklappen
Neue Werbung 2019
Einklappen
X
-
php-Ausgabe in Bilddatei?
Stichworte: -
-
Zitat von Arne Drews Beitrag anzeigenDas 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...
Wenn ich die erste Sache nicht könnte, würde ich das programmieren "drangeben"...
Nix für ungut
Gruß
Klaus
-
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
Wenn es daran scheitert, 10 Zeilen Code eigenständig umzusetzen und zu verstehen, empfinde ich lediglich Betroffenheit...
Einen Kommentar schreiben:
-
Zitat von nikosch Beitrag anzeigenHmm, statt das Problem anzugehen, willst DU es umgehen und dabei ein weiteres Problem schaffen?
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
Einen Kommentar schreiben:
-
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.
Geht das überhaupt, vielleicht so ähnlich, wie ich eine Scriptausgabe in eine Excel-Datei oder eine Mail schicken kann?
Einen Kommentar schreiben:
-
Ist doch alles verlinkt, über der bildlichen Darstellung...
Einen Kommentar schreiben:
-
Zitat von Arne Drews Beitrag anzeigenes gäbe einen Umweg über PDF: http://buffernow.com/html-to-image-php-script/
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
Einen Kommentar schreiben:
-
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/
Einen Kommentar schreiben:
-
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']; ?>°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']; ?>°C - <?php echo $wetter[1]['hoch']; ?>°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']; ?>°C - <?php echo $wetter[2]['hoch']; ?>°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ü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 0 : $text="Sturm"; break; //tornado
case 1 : $text="Sturm"; break; //tropical storm
case 2 : $text="Sturm"; break; //hurricane
case 3 : $text="Schweres Gewitter"; break; //severe thunderstorms
case 4 : $text="Gewitter"; break; //thunderstorms
case 5 : $text="Schneeregen"; break; //mixed rain and snow
case 6 : $text="Regen / Graupel"; break; //mixed rain and sleet
case 7 : $text="Schnee / Graupel"; break; //mixed snow an sleet
case 8 : $text="Gefrierender Nieselregen"; break; //freezing drizzle
case 9 : $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ö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ürmisch"; break; //blustery
case 24 : $text="windig"; break; //windy
case 25 : $text="frostig"; break; //cold
case 26 : $text="bewölkt"; break; //cloudy
case 27 : $text="meistens bewölkt"; break; //mostly cloudy (night)
case 28 : $text="meistens bewölkt"; break; //mostly cloudy (day)
case 29 : $text="teils bewölkt"; break; //partly cloudy (night)
case 30 : $text="teils bewö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ö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;
}
?>
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
Zitat von Teddyklaus Beitrag anzeigenVersteht Ihr, was ich meine?
Einen Kommentar schreiben:
Einen Kommentar schreiben: