WIE Variablenwert in PNG schreiben / imagecopymerge

Hallo zusammen,

ich würde mich über Unterstützung der hier zahlreich vertretenen PHP-Füchse freuen:

Nachdem das Floorplan-Thema gut voran kommt (Danke an Swissboy & bb),
versuche ich nun dynamisch meine Temperaturwerte in meinen „Bubbles“ darzustellen.

Die ursprüngliche Idee war eine Lösung mit einem Overlay eines HTML-Feldes das ich mit dem via PHP geladenen Text beschreibe. Ds ist wirklich viel Arbeit das ordentlich auszurichten und am Ende siehts aus wie Sau, und bei jedem Endgerät anders.

So sehen die „Sprechblasen“ aus:

(Das ist ein Lampen-Beispiel)

Die neue Idee ist: Wasserzeichen mit imagecopymerge. Kann das funktionieren ?


<?php
// Foto laden
$im = imagecreatefromjpeg('photo.jpeg');

// wir erstellen ein Wasserzeichen mit GD
$stamp = imagecreatetruecolor(100, 70);
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
$im = imagecreatefromjpeg('photo.jpeg');
imagestring($stamp, 5, 20, 20, 'libGD', 0x0000FF);
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF);

// Ränder setzen, Dimensionen ermitteln
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// Wasserzeichen mit einer Transparenz von 50% über das Foto legen
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);

// Bild speichern, aufräumen
imagepng($im, 'photo_stamp.png');
imagedestroy($im);

?>

Wer kennt sich mit diesem Befahl aus ? geht das mit nem PNG-file ?

Vielen Dank schon mal,

Servus

Zur ImageStamp Technik kann ich dir nix sagen, aber bedenke folgendes:
Du änderst das komplette Hintergrundbild. Folglich muß dies vom Browser neu geladen werden. Das bringt nun drei Probleme:

  • das ganze Bild wird neu aufgebaut --> sehr wahrscheinlich wird das flackern
  • der Browser muß es vom Server holen und kann nicht seinen eigenen Cache benutzen --> evtl. ein Performancethema
  • wenn du es gleich nennst mußt du sicherstellen das es der Browser neu lädt. --> evtl. Zusatzcode notwendig

Wo ist denn das Problem mit den Temperaturen ?
Da du einen strukturierten Hintergrund hast würde ich dem Temperaturfeld einen einfärbigen Hintergrund geben (nicht transparent). Dann ist das gut lesbar.
Die Methode per <DIV< Container zu plazieren verwende ich bei anderen Themen schon sehr sehr lange. Verschiebungen bei unterschiedlichen Browsern hab ich da noch NIE bemerkt.
excl. IOS Geräte/Safari, das hab ich noch nie probiert

Ja, das plazieren macht etwas Mühe, aber wenn mans mal raushat gehts auch wieder recht schnell.
Du mußt nur darauf achten das es alles selbstständige <DIV> Container sind die alle absolut positionieren und x=0/y=0 als Ursprung haben.
Ansonsten beeinflussen sich die Teile gegenseitig und dann wird das natürlich nix.

gruß
bb

Also ich möchte nicht den KOMPLETTEN Hintergrudn ändern,
sondern nur das jeweilige PNG welches die Temp. anzeigt dynamisch generieren.

(Schick wäre natürlich Farbänderung passend zur jew. Temperatur)

Aber für den Anfang soll mir reichen, den Text als „Wasserzeichen“ im jeweiligen PNG zu haben.

(ok, das mit der absoluten Positionierung der Container schau ich nochmal nach…)

Ach so, da hab ich dich falsch verstanden.
Habs so interpretiert als ob das das ganze Bild - mit allen sich ändernden Icons- als png erzeugen möchtest und dann nur mehr dieses zum Browser schicken.

Du willst also deine Sprechblase haben und da dann die Temperatur reinstampen.
Da müßte man wohl mehrer<DIV> ineinander schachteln damit das per HTML geht.

Wenns mit dem stampen nicht weiterkommst schick mir mal die Sprechblase.
Wenn ich Zeit hab schau ich mal ob ich dir da was nettes machen kann.

gruß
bb

:slight_smile:

Genau diese verschachtelten Container sind das Problemchen - ich schau mir das im Dreamweaver nochmal an - aber zuerst
schau ich mir heut Abend das mit dem Text stamp nochmal an…