![]() |
[PHP] Bilder mit PHP erstellen
Hi, in diesem Tutorial von mir (schon etwas älter), seht ihr wie man mit PHP dynamische Bilder erstellen kann.
Fangen wir mit einem einfachen Rechteck an (Erklärung im Code mit PHP-Kommentaren):
Code:
Ich denke, hierfür brauche ich kein Bild zu zeigen, da es nur eine schwarze Fläche 500x200px ist.
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen $width = 500; # Später die Breite des Rechtecks $height = 200; # Später die Höhe des Rechtecks $img = ImageCreate($width, $height); # Hier wird das Bild einer Variable zu gewiesen $black = ImageColorAllocate($img, 0, 0, 0); # Hier wird der Variable $black die Farbe schwarz zugewiesen # Die drei nullen bestehen aus den RGB-Parametern. 255, 0, 0 wäre z.B. rot. ($img muss am Anfang stehen) ImageFill($img, 0, 0, $black); # Hier wird mit ImageFill() das Bild gefüllt an den Koordinaten 0 und 0 mit der Variable $black, also Schwarz ImagePNG($img); # Hier wird das Bild PNG zugewiesen ?> ------------------------------------------------------------------------------------------------- Nun beschriften wir das Rechteck (z.B. für eine dynamische Signatur):
Code:
Hierfür brauche ich wohl auch kein Bild
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen ################################################## $width = 100; // Später die Breite des Rechtecks $height = 50; // Später die Höhe des Rechtecks $img = ImageCreate($width, $height); # Hier wird das Bild einer Variable zu gewiesen ################################################## ################################################## $black = ImageColorAllocate($img, 0, 0, 0); # Hier wird der Variable $black die Farbe schwarz zugewiesen $white = ImageColorAllocate($img, 255, 255, 255); # Hier wird der Variable $white die Farbe weiß zugewiesen # Die drei nullen bestehen aus den RGB-Parametern. 255, 0, 0 wäre z.B. rot. ($img muss am Anfang stehen) ################################################## ################################################## ImageFill($img, 0, 0, $black); # Hier wird mit ImageFill() das Bild gefüllt an den Koordinaten 0 und 0 mit der Variable $black, also Schwarz ImageString($img, 2, 26, 20, "Der Text", $white); # Die 2 steht für die GD-Lib interne Schriftart (es gibt insgesamt 5, also probierts aus). # Die 225 steht für die Position von Links, also 26px von Links entfernt. # Die 100 steht für die Postion von Oben, also 20px von oben entfernt. # Der Text, ist der, der später im Bild erscheinen soll. # $white steht für die Farbe die der Text haben soll. ################################################### ImagePNG($img); # Hier wird das Bild PNG zugewiesen ImageDestroy($img) # Hier wird der Speicherplatz für andere Sachen geereinigt ?> ---------------------------------------------------------------------- So nun kann man das Bild im Bild noch mal mit anderen Farben einfüllen. Ich hab mal eine Deutschlandfahne gemacht :D So hier ist der Code dafür:
Code:
So siehts dann aus:
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen ################################################## $width = 300; # Später die Breite des Rechtecks $height = 300; # Später die Höhe des Rechtecks $img = ImageCreate($width, $height); # Hier wird das Bild einer Variable zu gewiesen ################################################## ################################################## $black = ImageColorAllocate($img, 0, 0, 0); # Hier wird die Farbe schwarz einer Variable zugewiesen $red = ImageColorAllocate($img, 255, 0, 0); # Hier wird die Farbe rot einer Variable zugewiesen $yellow = ImageColorAllocate($img, 255, 255, 0); # Hier wird die Farbe gelb einer Variable zugewiesen ################################################## ################################################## ImageFill($img, 0, 0, $yellow); # Erst wird das Bild mit gelb gefüllt. ImageFilledRectangle($img, 0, 0, 300, 100, $black); # Mit ImageFillRectangle wird ein weiter Bereich des Bildes mit schwarz gefüllt # Die 1. 0 ist die Entfernung in px von Links. # Die 2. 0 ist die Entfernung in px von Oben. # Die 300 ist die Breite der Farbe. # Die 100 ist die Höhe der Farbe. ImageFilledRectangle($img, 0, 101, 300, 200, $red); # Hier die gleichen Sachen wie bei der Schwarzfüllung, nur mit anderen Koordinaten und anderer Farbe. ################################################## ImagePNG($img); ImageDestroy($img) # Hier wird der Speicherplatz für andere Sachen geereinigt ?> ![]() ---------------------------------------------------------------------- So jetzt kommen wir zu Kreisen, Ellipsen und Linien: Kreise, Halbkreise, Ellipsen:
Code:
Linien, Gestrichtelte Linien:
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen ################################################## $width = 100; // Später die Breite des Rechtecks $height = 100; // Später die Höhe des Rechtecks $img = ImageCreate($width, $height); # Hier wird das Bild einer Variable zu gewiesen ################################################## ################################################## $red = ImageColorAllocate($img, 255, 0, 0); # Hier wird der Variable $red die Farbe rot zugewiesen $white = ImageColorAllocate($img, 255, 255, 255); # Hier wird der Variable $white die Farbe weiß zugewiesen ################################################## ImageFill($img, 0, 0, $white); # Erst wird das Bild mit weiß gefüllt. ImageArc($img, 50, 50, 90, 20, 1, 180, $red); # Jetzt wird ein Kreis gezogen # Der erste Parameter 50 steht für die Entfernung in px von rechts # Der zweite Parameter 50 steht für die Entfernung in px von oben # Der dritte Parameter 90 steht für die Größe des Kreises (oder der Ellipse) in der Breite # Der vierte Parameter 20 steht für die Größe des Kreises (oder der Ellipse) in der Höhe # Der fünfte Parameter 1 steht für den Startwinkel # Der sechste Parameter 180 steht für den Endwinkel des Kreises (bzw. der Ellipse) ###################################################### ImagePNG($img); # Hier wird das Bild PNG zugewiesen ImageDestroy($img) # Hier wird der Speicherplatz für andere Sachen geereinigt ?>
Code:
----------------------------------------------------------------------
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen ################################################## $width = 250; # Später die Breite des Rechtecks $height = 250; # Später die Höhe des Rechtecks $img = ImageCreate($width, $height); # Hier wird das Bild einer Variable zu gewiesen ################################################## ################################################## $white = ImageColorAllocate($img, 255, 255, 255); # Hier wird die Farbe weiß einer Variable zugewiesen $black = ImageColorAllocate($img, 0, 0, 0); # Hier wird die Farbe schwarz einer Variable zugewiesen ################################################## ImageFill ($img, 0, 0, $white); # Das Bild wird mit weiß gefüllt. ImageLine($img, 1, 125, 250, 125, $black); # Mit ImageLine wir eine Linie gezeichnet # # Die 1 steht für den Abstand in px von links # Die 1. 125 steht für den Abstand in px von Oben vom linken Punkt der Strecke # Die 250 steht für den Abstand in px von rechts # Die 2. 125 steht für den Abstand in px von Oben vom rechten Punkt der Strecke # # !!! WICHTIG: Für geschtrichelte Lininen einfach den Befehl 'ImageDashedLine()' benutzen # Die Parameter sind gleich wie bei 'ImageLine' !!! # # ################################################## ################################################## ImagePNG($img); # Hier wird das Bild PNG zugewiesen ImageDestroy($img) # Hier wird der Speicherplatz für andere Sachen geereinigt ?> Jetzt kommen wir zu einem sehr interessanten Teil vom Tutorial: Mit existierenden Bildern z.B. eine dynamische Signatur bilden:
Code:
Das Ergebnis könnte dann so aussehen (P.S. das ist mein Alter Nick gewesen ;)):
<?php
Header("Content-Type: image/png"); # Hier wird der Header gesendet, der später die Bilder "rendert" ausser png kann auch jpeg dastehen ################################################## $width = 100; // Später die Breite des Rechtecks $height = 100; // Später die Höhe des Rechtecks $img = ImageCreateFromJPEG('g.jpg'); # Hier wird das Bild einer von einem Vorhandenen Bild benutzt (hier: g.jpg) # # Seit Version 1.6 der GD-Library ist .gif abgeschaltet also: # #--------------------------------------------------- # Zuhause von der GD-Lib: [url]http://www.boutell.com/gd/[/url] #--------------------------------------------------- # # Wenn ihr die GD-Library 2.0 habt immer .jpg oder .png aber kein .gif benutzen! # # So kann man GD-Library einstellen: # # 1. Öffnet im Windows-Ordner die php.ini z.B. C:\Windows\php.ini # # 2. Jetzt sucht (STR+F) nach ';Windows Extensions' (ohne den Hochkommata) # # 3. Dann schreibt 'extension=php_gd2.dll' unter 'extension=php_gd.dll' # # 4. Jetzt macht ein; vor 'extension=php_gd.dll'. Also aus 'extension=php_gd.dll' mach ';extension=php_gd.dll' # # 5. Oder wenn ihr GD-Lib 1.X wollt, dann macht es umgekehrt ################################################## $black = ImageColorAllocate($img, 0, 0, 0); # Farbe schwarz mit $black festlegen $font_height = ImageFontHeight(3); # Hier wird die Schrifthöhe mit 3 belegt (hier könnt ihr mit den Werten rumprobieren) $font_width = ImageFontWidth(3); # Hier wird die Schriftbreite mit 3 belegt (hier könnt ihr mit den Werten rumprobieren) $image_height = ImageSY($img); # Hier wird in einer Variable die Höhe des Bildes (hier g.jpg) gespeichert $image_width = ImageSX($img); # Hier wird in einer Variable die Breite des Bildes (hier g.jpg) gespeichert $text = 'Mein Name ist LLCoolDannY!'; # Hier ist der Text, der später im Bild stehen soll $length = $font_width*strlen($text); # Hier wird die Schriftbreite an das Bild angepasst # Hier kriegt man durch Teilungen die Mitte des Bildes heraus # $image_center_x = ($image_width/2)-($length/2); $image_center_y = ($image_height/2)-($font_height/2); ############################################################### ImageString($img, 3, $image_center_x, $image_center_y, $text, $black); /** * Die 3 nach der Variable $img steht für die GD-Lib interne Schriftart diese geht von 1-5 (also ausprobieren) * * -------------------------------------------------------------------------------------------------------------------------------- * Mit $image_center_x und $image_center_y wurde die Mitte herausgefunden und nun angewandt. (Dort können auch eigene Zahlen stehen) * Beispiel: * * ImageString($img, 3, 200, 150, 'Das ist ein Testtext', $black); * * Hier ist der String (Zeichenkette, also der Text) 200px von oben und 150px von links vom Bildrand entfernt * * -------------------------------------------------------------------------------------------------------------------------------- * */ ImagePNG($img); # Hier wird das Bild PNG zugewiesen ImageDestroy($img) # Hier wird der Speicherplatz für andere Sachen geereinigt ?> Vorher: ![]() Nachher: ![]() ---------------------------------------------------------------- So ich denke, alle hauptsächlichen Funktionen sind drin. Mamphil empfehlt: Man sollte wegen der besseren Qualität nur noch imagecopyresampled statt imagecopyresized nehmen! mfG, titus Zusatz: Hier sind alle (mir Bekannten) Verweise zu Image*()-Funktionen: ----------------------------------------------------------- ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Re: [PHP] Bilder mit PHP erstellen
Ist das das richtige für ein Delphi-Forum? :gruebel:
|
Re: [PHP] Bilder mit PHP erstellen
Meiner Meinung nach hast du zwei sehr wichtige Funktionen vergessen, die z.B. für einen Thumbnailgenerator unentbehlich sind.
Als da wären: ![]() Create a new true color image und ![]() imagecopyresampled() copies a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity. |
Re: [PHP] Bilder mit PHP erstellen
Stimmt ist ein älteres Tut da hab ich diese Funktionen nicht gebraucht und auch nicht davon gewusst :).
Werds mal in die Linkliste adden. @tommie-lie: Im Chat wurde mir gesagt, ich könne hier auch PHP-Tutorials posten. |
Re: [PHP] Bilder mit PHP erstellen
Zitat:
|
Re: [PHP] Bilder mit PHP erstellen
Hi!
Dann solltest du aber bitte auch nicht vergessen zu erwähnen, dass man wegen der besseren Qualität nur noch imagecopyresampled statt imagecopyresized nehmen sollte... Mamphil |
Re: [PHP] Bilder mit PHP erstellen
Jetzt muss ich auch mal was sagen.
In der Beschreibung dieser Sparte steht: Zitat:
|
Re: [PHP] Bilder mit PHP erstellen
Zitat:
|
Re: [PHP] Bilder mit PHP erstellen
Zitat:
|
Re: [PHP] Bilder mit PHP erstellen
Zitat:
Aber Daniel hätte sich sicherlich schon gemeldet, wenn er das Tutorial nicht in der DP haben wollte, also nehme ich mal an, daß es in Ordnung so ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz