Bilder in Studio einbinden (Webcam, Diagramme...)

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

SGiersch
Beiträge: 240
Registriert: 28.12.2007, 07:33
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von SGiersch » 03.08.2008, 17:40

Hallo zusammen,
ihr habt mein geheimstes FHZ-Gebet erhört.
Das Zusammenfassen von mehreren Werten in einer Anzeige und zwar so das es auch noch gut aussieht.

Den Thread habe ich immer übergangen, da ich mit dem Titel nichts anzufangen wusste. Ich wollte ja keine Bilder in meiner FHZ. Das hat sich nun zum Glück geändert!

Nun zu meinem Problem, es geht um die Schriften.
Als ich mit einer Anzeige (Temperatur und Feuchte) begonnen habe, hatte ich die Schrift arialbd.ttf benutzt. Hat auch alles funktioniert.
Bei einer anderen Anzeige (Heizung) wollte ich drei verschiedene Schriften benutzten, das sind DS-DIGIB.ttf, arial.ttf und arialbd.ttf. Das Problem ist nun das in allen Anzeigen nur noch die Schrift DS-DIGIB.ttf angezeigt wird und die restlichen Werte sind nun leer.
Selbst nach einem Neustart der Software und des ganzen PC’s werden die Schriften bis auf DS-DIGIB.ttf nicht mehr angezeigt.

Kennt dieses Problem jemand? :roll:

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von buempi » 03.08.2008, 21:39

Hallo SGiersch

Ja, das ist immer so ein Problem mit den Überschriften in den Threads. Viele Themen entwickeln sich oft in eine ganz andere Richtung, wo dann die Überschrift überhaupt nicht mehr dazu passt. Schön, dass du trotzdem darüber gestolpert bist und brauchen kannst, was wir da in einem tollen und spannenden Teamwork "entwickelt" haben.

Zum eigentlichen Problem: Homeputer und PHP verstehen sich ja irgendwie nicht so richtig, wenn es ums Laden von TT-Schriften geht. Der Verdacht von Sanys, dass da was hängen bleibt im Speicher, dürfte wohl richtig sein. Meine Überlegungen gingen auch in diese Richtung. Und die Tatsache, dass man im ersten Durchgang eine Schrift mehrmals laden kann, ohne dass ein Fehler auftritt, führte mich dann zu dem "wahnwitzigen" Versuch mit der Pseudo-Schrift. Ob das aber in JEDEM Fall und mit JEDER Schrift so ist, kann man nur hoffen. Wir kennen ja alle zusammen die Hintergründe nicht, die zu diesem eigenartigen Verhalten führen.

Es macht aber wenig Sinn, wenn ich (oder die beiden PHP-Könner unseres Teams) jetzt mit den von dir genannten drei Schriften was ausprobieren, das dann vielleicht geht oder nicht. Sinnvoller wäre sicher, wenn du dein Projekt posten würdest, und wir dann gemeinsam versuchen könnten, die "Nuss zu knacken". Mit vereinten Kräften....

Viele Grüsse
Bümpi

PS: Diese DS-DIGIB.ttf-Schrift scheint nicht zum Windows-Standard zu gehören. Vielleicht könntest zu sie (gezippt) deiner Antwort anhängen, damit wir beim Testen mit dem Original-Objekt arbeiten können

SGiersch
Beiträge: 240
Registriert: 28.12.2007, 07:33
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von SGiersch » 03.08.2008, 22:13

Hey buempi,
mit war schon klar, dass mit meinen pauschalen Aussagen keine Lösung geschaffen werden kann.
Aber nichts weniger als das, hier nun mein Problem in Lebensgröße.

Die php.ini:

Code: Alles auswählen

[PHP]
extension_dir = "C:\Dokumente und Einstellungen\Stephan\Eigene Dateien\FHZ\PHP-Zubehör"
extension = php_gd2.dll
Die php_gd2.dll ist im extension_dir Verzeichnis

Das Virtuelle Objekt:

Code: Alles auswählen

<?
  $Objectname = "vobjAnzeigeHeizungAZ";
  $HeadLine = "Heizung AZ";
  $Value1 = $RRArbeitszimmer_Ventilpos;
  $Value2 = $RRArbeitszimmer_Temperatur;
  $Value3 = $RRArbeitszimmer_Modus;
  $Value4 = $RRArbeitszimmer;


  //Dieser Pfad muss angepasst werden!!!
  include("c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\PHP-Zubehr\\Heizung.php");
?>

**phpAnzeige:=Scriptoutput
vobjAnzeigeHeizungAZ umschalten
Die Heizung.php

Code: Alles auswählen

<?
    //Dieser Pfad ist anzupassen.
    $filejpg = "c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\FHZ-Bilder\\".$Objectname.".jpg";
	
	//Variablen festlegen
    $HeaderSize = 18;
    $SizeX = 100;
    $SizeY = 56+$HeaderSize;
    $HeadFont = "arialdb.ttf"; //arialbd.ttf
    $HeadFontSize = 8;
	$TextFont = "arial.ttf"; //arial.ttf
	$TextFontSize = 7;
    $WertFont = "cour.ttf"; //DS-DIGIB.ttf
    $WertFontSize = 9;
	
	$Text1 ="Ventil";
	$Text2 ="Ist Temp.";
	$Text3 ="Modus";
	$Text4 ="Soll Temp.";
	
	//Übergabewerte prüfen und in Text umwandeln
	/*
	$Value1 = 50; //Ventilstellung
	$Value2 = 30.0; //Gemessene Temperatur
	$Value3 = 1; //Modus
	$Value4 = 25.0; //Gewünschte Temperatur
	*/
	
	//Ventilstellung
	$Value1 = sprintf("%d", $Value1);
    if ($Value1 < 0) $Value1 = "--";
    $Wert1 = $Value1 . " %";
	
	//Gemessene Temperatur
    $Value2 = sprintf("%.1f", $Value2);
    if ($Value2 < -100) $Value2 = "--,-";
    $Wert2 = str_replace(".", ",", $Value2) . " 'C";
	
	//Modus
    if ($Value3 == 0) $Wert3 = "Manu";
    if ($Value3 == 1) $Wert3 = "Auto";
	
	//Gewünschte Temperatur
    $Value4 = sprintf("%.1f", $Value4);
    if ($Value4 < -100) $Value4 = "--,-";
    $Wert4 = str_replace(".", ",", $Value4) . " 'C";
	
	//Farben festlegen
    $im = imagecreatetruecolor ($SizeX, $SizeY);
    $gray = ImageColorAllocate ($im, 214, 211, 206);
    $darkgray = ImageColorAllocate ($im, 128, 128, 128);
    $black = ImageColorAllocate ($im, 0, 0, 0);
    $white = ImageColorAllocate ($im, 255, 255, 255);
    $blue = ImageColorAllocate ($im, 0, 0, 255);

    $hintergrund = $gray;
    $vordergrund = $blue;
   
    // Wegen Fehler in Homeputer-PHP, zunächst Pseudoschrift laden
    ImageTTFText ($im, 18, 0, 0, 0, $black, $fontdir."wingding.ttf", "");       

	// Den Hintergrund "ausmalen"
    imagefill($im, 0, 0, $hintergrund);
	
	//Die Rahmen zeichnen
    imagerectangle ($im, 0, 0, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 3, 3, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-4, $SizeY-4, $white);
    imagerectangle ($im, 2, 2, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 0, 0, $SizeX-3, $SizeY-3, $white);

	//Zwischenlinien zeichnen
	//Horizontal 1 (Unter der Kopfzeile)
    imageline($im, 2, $HeaderSize+0, $SizeX-4, $HeaderSize+0, $white);
    imageline($im, 2, $HeaderSize+1, $SizeX-4, $HeaderSize+1, $darkgray);
	//Horizontal 2 (Zwischen den Werten)
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $white);
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $darkgray);
	//Vertikal
    imageline($im , ceil($SizeX/2)-5, $HeaderSize+1, ceil($SizeX/2)-5, $SizeY-4 , $white);
    imageline($im , ceil($SizeX/2)-4, $HeaderSize+1, ceil($SizeX/2)-4, $SizeY-4 , $darkgray);

	/*
	Info:
	array imagettftext ( resource $im, int $size, int $angle, int $x, int $y, int $col, string $fontfile, string $text )
	array imagettftext (Bild,Schriftgröße,Winkel,x-anfang,y-anfang,Farbe,Schrifttyp,Text)
	*/
	
	//Überschrift einfügen
    $tb = imagettfbbox($HeadFontSize, 0, $HeadFont, $HeadLine);
    ImageTTFText ($im, $HeadFontSize, 0, ceil($SizeX/2 - ($tb[2]/2)) , $HeadFontSize+7, $black, $HeadFont, $HeadLine);       

	//Überschrift1 einfügen (Ventilstellung)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text1);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text1);       
	//Wert 1 einfügen (Ventilstellung)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert1);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert1);       

	//Überschrift2 einfügen (Gemessene Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text2);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text2);    
	//Wert2 einfügen(Gemessene Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert2);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert2);

	//Überschrift3 einfügen (Modus)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, Text3);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)-5, (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text3);
	//Wert3 einfügen (Modus)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert3);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)+0, (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert3);
	
	//Überschrift4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text4);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text4);
	//Wert4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert4);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert4);
	
	//Das Bild im Speicher erzeugen und abspeichern
    Imagejpeg ($im, $filejpg , 99);
	//Das Bild im Speicher zerstören
    ImageDestroy ($im);
?>
So wie es bis jetzt aussieht, können bei mir nicht mehr als zwei verschiedene Schriften (in allen Anzeigen zusammen genommen) angezeigt werden.
Die Schriften habe ich mal auf Standartschriften geändert, im Kommentar ist die Wunschschrift.
Die DS-DIGIB.ttf ist http://www.dafont.com/ds-digital.font zufinden.

Gruß :wink:
Stephan

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von buempi » 04.08.2008, 07:15

Hallo Stephan

Ich habe dein Script bei mir noch nicht installiert und getestet. Es sind mir aber zwei Sachen aufgefallen:

1. Am Anfang werden die Schriftarten ($HeadFont etc.) definiert. Da verwendest du keine Pfadangabe. Hast du die Schriften alle drei ins Homeputer-Verzeichnis kopiert?

2. Da, wo du die Pseudoschrift lädst, verwendest du eine Variable $fontdir, die aber soweit ich sehe nirgends definiert ist. Damit kann das Script diese Schrift doch nicht finden, und die erste "wirkliche" Schrift wird zur Pseudoschrift, allerdings nicht mit einem Leerstring, wie es sein sollte.

Werde das Script nachher bei mir noch installieren und schauen, wie es mit dieser Änderung läuft.

Viele Grüsse
Bümpi

Edit: Eben fällt mir noch was auf. Die HeadFont-Schrift gibst du mit arialdb.ttf an. - Die heisst doch arialbd.ttf?

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von buempi » 04.08.2008, 09:09

Hallo Stephan

Ich habe das Script inzwischen bei mir installiert. Dabei habe ich alle 4 Schriften (inkl. wingding) in mein Homeputerverzeichnis kopiert, den Verdreher bei arialbd.ttf korrigiert und die Pfad-Variable bei der Pseudoschrift weggelassen. Dann funktioniert es.

Mit einer Einschränkung: Wenn ich während des laufenden Betriebs in der Include-Datei HEIZUNG.PHP eine Schrift auswechsle, kommt wieder der ominöse "loading glyph"-Fehler. Ich muss dann Homeputer (nicht nur die Ausführung) GANZ beenden und neu starten. Dann geht's wieder.

Wie sieht das jetzt bei dir aus?

Viele Grüsse
Bümpi

SGiersch
Beiträge: 240
Registriert: 28.12.2007, 07:33
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von SGiersch » 04.08.2008, 11:05

Hallo buembi,
vielen Dank für den Klaps auf den Kopf.

Zuerst ein kleiner Erklärungsversuch.
Natürlich war es die Variable $fontsdir. Mir war gerade die glorreiche Idee gekommen die Schriften in ein eigenes Verzeichnis zu legen, als meine Frau mich in beschlag genommen hat.
Na was soll ich sagen, als ich wieder am PC war hab ich mich gewundert das es nicht funktionierte und das ich eine nicht deklarierte Variable eingesetzt habe ist mir dann auch nicht mehr aufgefallen.
Die Tatsache das während des Laufes die Schriften nicht austauschbar sind hat sein Übriges dazugetan. :twisted:

Nebenbei, Standardschriften, die im Windows/Fonts Ordner liegen, können direkt angesprochen werden.

Der Verdreher in der arialbd.ttf war nur hier im Forum. :oops:

Ich bin so froh das ich doch noch in diesen Beitrag geschaut habe, so kann ich nun meine ungeliebten Anzeigen nach meinen Wünschen abändern.
Ein ganz großes Dankeschön an alle hier.
Und ganz besonders Dank ich dir buempi, dass du dich immer so unermüdlich für uns einsetzt. :!:

Gruß
Stephan

SGiersch
Beiträge: 240
Registriert: 28.12.2007, 07:33
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von SGiersch » 07.08.2008, 11:30

Hallo zusammen.
Hier nun die fertige Heizungsanzeige.
vobjAnzeigeHeizungWZ.jpg
Heizungsanzeige
vobjAnzeigeHeizungWZ.jpg (9 KiB) 3174 mal betrachtet
Mit einer Anzeige hatte alles funktioniert aber, mit dem Aufruf der Heizung.php durch drei Regler ist das Programm wohl ein wenig durcheinander gekommen. Der "loading glyph"-Fehler hat immer wieder zugeschlagen.
Nun wird für jeden Raumregler eine eigene Version der Heizung.php aufgerufen und zusätzlich wird die Ausführung des Makrocodes verzögert. Seit nun mehr als 24 Stunden laufen nun alle Anzeigen ohne Fehler.
Eine Kleinigkeit macht mich aber immer noch Stutzig.
Die Gemessene Temperatur wird in der Nachkommastelle immer auf Null gerundet.
Der Verursacher ist der Befehl „$Value2 = sprintf("%0.1f", $Value2);“, bis jetzt bin ich immer davon ausgegangen das „sprintf“ nicht rundet oder abschneidet, zumal auch in der "Soll Temp." auch alles funktioniert?

Der zugehörige Makrocode

Code: Alles auswählen

warte 00:02:00
<?
  $Objectname = "vobjAnzeigeHeizungAZ";
  $HeadLine = "Heizung AZ";
  $Value1 = $V_RRArbeitszimmer_Ventilpos;
  $Value2 = $V_RRArbeitszimmer_Temperatur;
  $Value3 = $V_RRArbeitszimmer_Modus;
  $Value4 = $RRArbeitszimmer;

  //Dieser Pfad muss angepasst werden!!!
  include("c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\PHP-Zubehr\\HeizungAZ.php");
?>

phpAnzeige:=Scriptoutput
vobjAnzeigeHeizungAZ umschalten
Die Heizung.php

Code: Alles auswählen

<?
    //Diese Pfade sind noch anzupassen.
    $filejpg = "c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\FHZ-Bilder\\".$Objectname.".jpg";
	$fontdir = "c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\PHP-Zubehör\\Fonts\\";
	
	//Variablen festlegen
    $HeaderSize = 18;
    $SizeX = 100;
    $SizeY = 56+$HeaderSize;
    $HeadFont = $fontdir."arialbd.ttf"; //arialbd.ttf
    $HeadFontSize = 8;
	$TextFont = $fontdir."arial.ttf"; //arial.ttf
	$TextFontSize = 7;
    $WertFont = $fontdir."DS-DIGIB.ttf"; //DS-DIGIB.ttf
    $WertFontSize = 9;
	
	$Text1 ="Ventil";
	$Text2 ="Ist Temp.";
	$Text3 ="Modus";
	$Text4 ="Soll Temp.";
	
	//Übergabewerte prüfen und in Text umwandeln
	/*
	$Test1 = $Value1; // = 50; //Ventilstellung
	$Test2 = $Value2; // = 30.0; //Gemessene Temperatur
	$Test3 = $Value3; // = 1; //Modus
	$Test4 = $Value4; // = 25.0; //Gewünschte Temperatur
	echo "Ventil(1)=" .$Test1. " Ist(2)=" .$Test2. " Modus(3)=" .$Test3. " Soll(4)=" .$Test4; 
	*/
	
	//Ventilstellung
	$Value1 = sprintf("%d", $Value1);
    if ($Value1 < 0) $Value1 = "--";
    $Wert1 = $Value1 . " %";
	
	//Gemessene Temperatur
	$Value2 = sprintf("%0.1f", $Value2);
	if ($Value2 == 0.0) $Value2 = "--";
    $Wert2 = str_replace(".", ",", $Value2) . " 'C";
	
	//Modus
	// Dauer_lang und Dauer_kurz werden noch nicht abgefragt, Anzeige bleibt leer.
	if ($Value3 == "---") $Wert3 = "--";
    if ($Value3 == "Manuell") $Wert3 = "Manu";
    if ($Value3 == "Automatik") $Wert3 = "Auto";
	
	//Gewünschte Temperatur
	$Value4 = sprintf("%0.1f", $Value4);    
    if ($Value4 == 0.0) $Value4 = "--";
	if ($Value4 == 30.5) $Value4 = "ON";
	if ($Value4 == 5.5) $Value4 = "OFF";
    $Wert4 = str_replace(".", ",", $Value4) . " 'C";
	
	//Farben festlegen
    $im = imagecreatetruecolor ($SizeX, $SizeY);
    $gray = ImageColorAllocate ($im, 214, 211, 206);
    $darkgray = ImageColorAllocate ($im, 128, 128, 128);
    $black = ImageColorAllocate ($im, 0, 0, 0);
    $white = ImageColorAllocate ($im, 255, 255, 255);
    $blue = ImageColorAllocate ($im, 0, 0, 255);

    $hintergrund = $gray;
    $vordergrund = $blue;
   
    // Wegen Fehler in Homeputer-PHP, zunächst Pseudoschrift laden
    ImageTTFText ($im, 18, 0, 0, 0, $black, $fontdir."wingding.ttf", "");       

	// Den Hintergrund "ausmalen"
    imagefill($im, 0, 0, $hintergrund);
	
	//Die Rahmen zeichnen
    imagerectangle ($im, 0, 0, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 3, 3, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-4, $SizeY-4, $white);
    imagerectangle ($im, 2, 2, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 0, 0, $SizeX-3, $SizeY-3, $white);

	//Zwischenlinien zeichnen
	//Horizontal 1 (Unter der Kopfzeile)
    imageline($im, 2, $HeaderSize+0, $SizeX-4, $HeaderSize+0, $white);
    imageline($im, 2, $HeaderSize+1, $SizeX-4, $HeaderSize+1, $darkgray);
	//Horizontal 2 (Zwischen den Werten)
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $white);
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $darkgray);
	//Vertikal
    imageline($im , ceil($SizeX/2)-5, $HeaderSize+1, ceil($SizeX/2)-5, $SizeY-4 , $white);
    imageline($im , ceil($SizeX/2)-4, $HeaderSize+1, ceil($SizeX/2)-4, $SizeY-4 , $darkgray);

	/*
	Info:
	array imagettftext ( resource $im, int $size, int $angle, int $x, int $y, int $col, string $fontfile, string $text )
	array imagettftext (Bild,Schriftgröße,Winkel,x-anfang,y-anfang,Farbe,Schrifttyp,Text)
	*/
	
	//Überschrift einfügen
    $tb = imagettfbbox($HeadFontSize, 0, $HeadFont, $HeadLine);
    ImageTTFText ($im, $HeadFontSize, 0, ceil($SizeX/2 - ($tb[2]/2)) , $HeadFontSize+7, $black, $HeadFont, $HeadLine);       

	//Überschrift1 einfügen (Ventilstellung)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text1);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text1);       
	//Wert 1 einfügen (Ventilstellung)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert1);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert1);       

	//Überschrift2 einfügen (Gemessene Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text2);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text2);    
	//Wert2 einfügen(Gemessene Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert2);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert2);

	//Überschrift3 einfügen (Modus)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, Text3);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)-5, (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text3);
	//Wert3 einfügen (Modus)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert3);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)+0, (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert3);
	
	//Überschrift4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text4);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text4);
	//Wert4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert4);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert4);
	
	//Das Bild im Speicher erzeugen und abspeichern
    Imagejpeg ($im, $filejpg , 99);
	//Das Bild im Speicher zerstören
    ImageDestroy ($im);
?>
By
Stephan

Kaskoe
Beiträge: 40
Registriert: 22.06.2007, 16:12
Wohnort: Böhl-Iggelheim

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von Kaskoe » 07.08.2008, 13:38

Hallo Stephan und Bümpi,

super, was ihr hier entwickelt. Das Beste ist, dass ich die Grafiken auch noch in den WebServer einbinden kann. Macht bitte weiter so....!!!

Gruß, Karsten

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von buempi » 07.08.2008, 15:29

Hallo Stephan

Nun ja, es ist ja eigentlich nicht Sinn und Zweck einer Include-Datei, dass man sie für jeden Zweck, für den man sie braucht, neu erstellen muss.... Aber, wenn's nicht anders geht: Besser so als gar nicht!

Mit PHP bin ich noch ganz im Anfängerstadium. Aber, ich denke, dass du (bevor du "sprintf" verwendest), bei dem von Homeputer gemeldeten Wert das Komma durch den Punkt ersetzen musst. Allerdings überrascht es mich, dass es bei der Vorgabe-Temperatur funktioniert. Oder hast du da vielleicht nur ganzzahlige Werte? Testen kann ich es bei mir nicht, weil Homeputer hier in der Schweiz auch mit dem Punkt arbeitet. Das liegt an der unterschiedlichen Ländereinstellungen. Bei uns ist eben der Punkt das Dezimaltrennzeichen.

Warum verwendest du überhaupt "sprintf"? - Einfach nur "str_replace(",",".", $Value2)" würde doch auch genügen?

Viele Grüsse
Bümpi

SGiersch
Beiträge: 240
Registriert: 28.12.2007, 07:33
Hat sich bedankt: 4 Mal
Danksagung erhalten: 2 Mal
Kontaktdaten:

Re: Bilder in Studio einbinden (Webcam, Diagramme...)

Beitrag von SGiersch » 07.08.2008, 16:07

Hallo buembi.

Den Befehl sprintf benutze ich da mit aufgefallen ist, dass die Wertübergabe nicht immer korrekt ist, es kommen auch mal Werte mit vielen Nachkommastellen an. Wo die herkommen, weiß ich nicht.
Mit diesem Befehl kann die Ausgabe nach Wunsch angepasst werden, in meinem Fall mit "%.1f" auf eine Nachkommastelle.
( siehe auch http://de.php.net/manual/de/function.sprintf.php)

Bei der Soll Temp. kommen auch Kommawerte an, aber nur in 0.5'er Schritten und die werden ohne Probleme angezeigt.

Auch ich bin mit diesem Thema ein php Einsteiger geworden, habe deshalb bitte ein wenig Nachsicht mit mir.

@ Kaskoe
Da ich nur ein Nutznießer dieses Themas bin, kann ich dein Lob nicht annehmen.

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“