Antworten auf deine Fragen:
Neues Thema erstellen

Image-Funktionen

ddjjmm

Nicht mehr ganz neu hier

Habe ein kleines Programm geschrieben, mit dem ich Werte via Formular eingeben kann, die dann auf dem generierten PNG Bild erscheinen:

PHP:
Header("Cache-Control: no-cache");
    Header("Content-type: image/png");

    $ausgangsbild = "/images/kicker.png"; // Pfad zum Bild
    $zielbild = ImageCreateFromPNG($ausgangsbild);
    $color = ImageColorAllocate ($zielbild, 255, 0, 0);
    
    //( Bild, Schriftart 1-5, Abstand in Pixel auf der x-Achse, Abstand in Pixel auf der y-Achse, Text der geschrieben werden soll, Farbe)
    ImageString($zielbild, 5, 50, 15, $_POST[name], $rot);
    ImageString($zielbild, 5, 50, 35, $_POST[auswahlbox], $rot);
    Imagestring($zielbild, 5, 50, 55, $_POST[verein], $rot);  

    ImagePNG ($zielbild) or die("Endbild nicht erzeugt!"); // Bild ausgeben
    Imagedestroy ($zielbild);

Ich frage mich nun, ob es analog zu der funktion ImageString eine Möglichkeit gibt, an einer gewissen Stelle zusätzlich ein Bild zu platzieren?

Die Idee: Je nach Wahl des Users (einer zweiten auswahlbox) soll eins von vier icons auf dem banner erscheinen.

Notfalls müsst ich den Banner als Rohdatei 4x vorbereiten?
 

owieortho

Aktives Mitglied

AW: Image-Funktionen

Habe das bei einem JPG mal mit imagecreatefromjpeg und imagecopymerge
gemacht. Guck mal bei php.net nach, da gibt es garantiert ein Äquivalent für PNGs.
 

saila

Moderatorle

AW: Image-Funktionen

Hi,

ich will ja nicht nerven, aber hattest du nicht einen Thread mit dem Them eröffnet? Wenn deine Frage nicht beantwortet ist oder das Thema für dich noch nicht geklärt oder was auch immer, dann ist es nicht dein Interesse einfach einen neuen Thread zu öffnen.

Und hatte cebito nicht schon einige Posts von dir wegen Spam gelöscht?!

Hoffe das war klar genug.

Zum eigentl. Thema - du solltest zum einen deine vom User gesendeten Variablen prüfen, ob diese überhaupt einen Inhalt haben. Weil bei der Verwendung der Leertaste, dürfte da kein Text enthalten sein. Hierzu wären deine Freunde:

htmlspezialchars() oder htmlentities() als auch strip_tags() und danach noch trim()

Davor wäre es ratsam, dass du Variablen wie
PHP:
<?php
$postName = $_POST[name];
/* wie folgt notierst */
$postName = $_POST['name'];
?>
Und zum Schluss die Frage, warum willst du ein png erzeugen? Wegen evtl. transparentem Hintergrund?
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

@saila: Nein es dreht sich grundsätzlich um ein neues Thema, daher auch die Topic allgemein gehalten zu den "Image-Funktionen". Gelöscht/gespammt wurde bei mir au nix.

Zum Thema:

Danke für den Tipp, werde ich ausprobieren.

Grundsätzlich ist PNG aktuell nicht dringend notwendig, hatte darauf gebaut, für den fall von transparenten bannern, richtig.
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

Wie bekomm ich es denn hin, dass die erstellten Bilder bei mir auf den Server geladen werden und nicht nur als Download angeboten werden?
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

Hab mal ne andere Version gebaut:

PHP:
<?php
Header("Cache-Control: no-cache");
    Header("Content-type: image/png");

    $ausgangsbild = "test.png"; // Pfad zum Bild
    $zielbild = ImageCreateFromPNG($ausgangsbild);
    $white = ImageColorAllocate ($zielbild, 255, 255, 255);
    $orange = ImageColorAllocate ($zielbild, 250, 127, 67);
    $fontpath = "verdanaz.ttf";
    
   ImageTTFText($zielbild, 10, 0, 10, 10, $white, $fontpath, "Image Video");

    ImagePNG ($zielbild);
    Imagedestroy ($zielbild);  
?>
Jemand ne Ahnung wieso es nicht geht? Bild wird einfach nicht angezeigt.

Pfade etc zu den Dateien stimmen, kann sie aufrufen.
 

netbandit

Aktives Mitglied

AW: Image-Funktionen

Also wenn Dein Hintergrund nicht gerade weiss ist und Script/Font/PNG im selben Verzeichnis liegen sollte es funktionieren. Bei mir klappt es auf jeden mit dem von Dir gepostetem Script

Oft ist aber bei der Testerei mit den Imagefunktionen der Cache des Browsers ein Problem. Ggf. mal löschen und den Browser neu starten

Grüße
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

Komisch. Habs auch mit mehreren Browsern probiert, klappt nirgend's.
 
Zuletzt bearbeitet:

ddjjmm

Nicht mehr ganz neu hier

Okay nun klappt's:

PHP:
<?php
// Set the content-type
Header('Content-type: image/png');

// Create the image by default
// $im = imagecreatetruecolor(400, 30);

// Create the image by a file
$source = "images/produktbanner_bg.png";
$im = ImageCreateFromPNG($source);

// Create some colors
$white = ImageColorAllocate($im, 255, 255, 255);
$grey = ImageColorAllocate($im, 128, 128, 128);
$black = ImageColorAllocate($im, 0, 0, 0);

// The text to draw
$text = 'Video Visitenkarte';
// Replace path by your own font path
$font = 'fonts/verdanaz.ttf';


// Add the text
ImageTTFText($im, 20, 0, 10, 20, $black, $font, $text);

// Add some shadow to the text
ImageTTFText($im, 20, 0, 11, 21, $grey, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
ImagePNG($im);
imagedestroy($im);
?>
Fehlerlösung:
Wenn die Schriftart im gleichen Verzeichnis wie die PHP Datei liegt, muss man sie wie folgt definieren: $font = './verdanaz.ttf';

Hatte es nur mit 'verdanaz.ttf' probiert, woran es gescheitert ist. :p

Danke für Eure Hilfe!

Ne Erweiterung dazu:

Der Text soll immer zentriert geschrieben werden, da er unterschiedlich lang sein wird.

Ist es möglich, das mit der o.g. Funktion umzusetzen oder muss ich zu imagettfbbox greifen?

Zudem das Problem:

Es sollen ähnliche Begriffe eingegeben werden, z.B.

"Schinken Pizza Pilze", "Pizza Salami", "Hawai Pizza"

Dabei soll jedoch IMMER das Wort Pizza in einer anderen Farbe geschrieben werden, der Rest immer in weiß.

Dachte ich kann es hiermit lösen:
PHP:
$eingabe = "Salami Pizza Schinken";
$tmp = explode("Pizza",$eingabe);    //    uebergebenen Wert separieren, Separator Semikolon
                $teil1[] = $tmp[0];  // Separierte Werte in separierte Arrays uebergeben
                $teil2[] = $tmp[1];
...
Jemand ne Idee ob das funktioniert oder ob's anders? Das ganze Skript ist wie in dem Post oben drüber.
 
Zuletzt bearbeitet von einem Moderator:

saila

Moderatorle

AW: Image-Funktionen

Dein Freud nennt sich "preg_replace()".

Code:
preg_match('#(Pizza)#i', '<spanc class="colorRed">$1</span>', $str);

oder so.....
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

Mh im Grunde schon, allerdings wird das sehr schwer mit dem Code.

Ich übergebe ja in das Programm den String der aufs Bild geschrieben werden soll. Innerhalb dieses Strings ist ein Wort, das im Gegensatz zu den anderen farbig sein soll.

Mit explode z.B. kann ich den String ja in seine Einzelteile zerlegen, z.B.
$teil1 = "Schinken";
$trennwort = "Pizza";
$teil2 = "Hawai";

Nur wie bau ich es nun in der richtigen Reihenfolge wieder zusammen ?

Mit ImageTTFText($im, 20, 0, 70, 40, $black, $font, $text1); mache ich ja die Textausgabe. Im Grunde müssten dann ja die Zeichen des z.B. $teil1 gezählt werden, dann wird zuerst dieser Teil gedruckt, dann z.B. das Trennwort mit der anderen Farbe und versetzt um die Anzahl der zeichen nach rechts (?) und dann der $teil2 wieder versetzt hinten dran?

Klingt ziemlich umständlich
 

saila

Moderatorle

AW: Image-Funktionen

Im Grunde ist es egal wie du den str aufteilst. Ob explode, preg_match .....
Wichtiger ist, wie du den String in unterschiedlichen Farben letztlich auf das Bild legst ;) Nur eines muss auf jeden Fall geprüft werden: Ist "Pizza" enthalten und wenn ja, nimm das und mach was damit.
 

Duddle

Posting-Frequenz: 14µHz

AW: Image-Funktionen

Das ist sehr einfach umzusetzen (wenn dir die entsprechenden Funktionen sofort einfallen). Pseudocode:
Code:
x ist 50
für jedes Wort im Eingabestring:
  wenn Wort == "Pizza": Textfarbe ist rot
  sonst: Textfarbe ist schwarz
  schreibe (Wort + " ") an Position (x, 0) mit Textfarbe

  berechne Breite von (Wort + " ")
  x ist (x + Breite)
ende für


Duddle
 

ddjjmm

Nicht mehr ganz neu hier

AW: Image-Funktionen

Ganz ehrlich, ich komm mit der Umsetzung nicht klar, wenn ichs in meinen weiter oben geposteten Code einbauen will :-(
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.617
Beiträge
1.538.360
Mitglieder
67.534
Neuestes Mitglied
QuestionMark
Oben