Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [PHP] Erstellung und Bearbeitung von Bildern mittels PHP
Antwort
 
Themen-Optionen
Alt 18.08.2005, 17:01 Nach oben    #1
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard [PHP] Erstellung und Bearbeitung von Bildern mittels PHP

Diese Tutorial befasst sich mit der Erstellung und Bearbeitung von Bildern mittels PHP.

besondere Vorraussetzungen:
- GD-Bibliothek installiert (verfügbar unter http://www.boutell.com/gd/)

Informationen zu GD:
Versionen vor gd-1.6 unterstützen das GIF- aber kein PNG-Format.
Die Versionen danach unterstützen zwar das PNG- aber nicht mehr das GIF-Format.


Bilder und Grafiken dynamisch erzeugen und bearbeiten

Das nachfolgende Beispiel erzeugt eine Karte auf welcher Koordinaten und dazugehörige Nummer/Texte zu den Koordinaten abgebildet werden.
Als erstes erstellen wir eine PHP-Datei in dem wir das Skript unterbringen werden. Beispielsweise map_create.php.

PHP-Code:
<?php
    $im 
ImageCreate(800800); // Erstellt ein Image der größe 800x800
?>
Nun haben wir ein Image in einer Variablen gespeichert und können nun Eigenschaften des Image festlegen.
Beginnen wir mit Hintergrund- und Textfarben

PHP-Code:
<?php
    $im 
ImageCreate(800800);
    
// Die nachfolgenden Farben beziehen sich auf RGB Format mit
    // 0-255 als Integerwerte (Ganzzahlig)
    // Jede Farbe bezieht sich auf das oben erstellte Image $im
    // Helles Blau als Hintergrundfarbe
    
$background_color ImageColorAllocate ($im0100255);
    
// Grüne Punktfarbe
    
$koordinaten_punkt ImageColorAllocate ($im02550);
    
// Rote Textfarbe
    
$kordinaten_text ImageColorAllocate ($im25500);
?>
Nun könnten wir Testweise unser Bild ausgeben, wir benötigen dafür einen Header.

PHP-Code:
<?php
    
// Ohne diesen Header wird ein ausgegebenes Bild als String ausgegeben
    // Natürlich nicht das, was wir haben wollen
    
header ("Content-type: image/png");
    
$im ImageCreate(800800);
    
$background_color ImageColorAllocate ($im0100255);
    
$koordinaten_punkt ImageColorAllocate ($im02550);
    
$kordinaten_text ImageColorAllocate ($im25500);
    
// Ausgabe des erstellten Images an den Browser
    
ImagePNG($im);
?>
Was wir hier erhalten ist ein hellblaues Bild ohne Koordinatenpunkte oder Text.
Diese fügen wir folgendermaßen ein.

PHP-Code:
<?php
    header 
("Content-type: image/png");
    
$im ImageCreate(800800);
    
$background_color ImageColorAllocate ($im0100255);
    
$punkt_color ImageColorAllocate ($im02550);
    
$text_color ImageColorAllocate ($im25500);
    
// Nachfolgend fügen wir einen Punkt ein
    
imagesetpixel($im400400$punkt_color);
    
// Ein Pixel ist schlecht zu sehen, machen wir ihn also größer (2x2)
    
imagesetpixel($im401400$punkt_color);
    
imagesetpixel($im400401$punkt_color);
    
imagesetpixel($im401401$punkt_color);
    
// Nun brauchen wir natürlich auch einen Text, damit wir wissen
    // was der Punkt für Koordinaten hat
    // $im ist das Bild, wo der Text rein soll
    // 3 ist die Schriftgröße
    // 377 / 405 sind die Koordinaten der linken oberen Ecke des Textes
    // $text_color ist die Textfarbe
    
ImageString ($im3377405"400:400"$text_color);
    
ImagePNG($im);
?>
Damit sehen wir nun im Zentrum der Karte unseren Punkt sowie den eingefügten Text.

Das Bild auf euren Server zu speichern, ist natürlich ebenfalls möglich.
Dafür müsst ihr auf den Header verzichten sowie einen Pfad und Dateinamen angeben, wo das Bild gespeichert werden soll.

PHP-Code:
<?php
    
//Header wurde entfernt
    
$im ImageCreate(800800);
    
$background_color ImageColorAllocate ($im0100255);
    
$punkt_color ImageColorAllocate ($im02550);

    
$text_color ImageColorAllocate ($im25500);
    
imagesetpixel($im400400$punkt_color);
    
imagesetpixel($im401400$punkt_color);
    
imagesetpixel($im400401$punkt_color);
    
imagesetpixel($im401401$punkt_color);
    
ImageString ($im3377405"400:400"$text_color);
    
// Speicherung des Images in der Datei map.png
    
ImagePNG($im"map.png");
?>
Damit verhindert ihr, dass ihr jedes mal euer Bild erstellen müsst, wenn ihr es anzeigen lassen wollt.
Beim Aufruf dieses Scripts wird dann allerdings eine leere Seite angezeigt, da die Bildausgabe in die Datei umgeleitet wurde.

Zum öffnen eines vorhandenen Bildes muss das Script wie folgt abgeändert werden.

PHP-Code:
<?php
    
// Ohne diesen Header wird ein ausgegebenes Bild als String ausgegeben
    // Natürlich nicht das, was wir haben wollen
    
header ("Content-type: image/png");
    
// Öffnen eines bereits existierenden Images zur Bearbeitung
    
$im ImageCreateFromPNG("map.png");
    
$background_color ImageColorAllocate ($im0100255);
    
$punkt_color ImageColorAllocate ($im02550);
    
$text_color ImageColorAllocate ($im25500);
    
imagesetpixel($im400400$punkt_color);
    
imagesetpixel($im401400$punkt_color);
    
imagesetpixel($im400401$punkt_color);
    
imagesetpixel($im401401$punkt_color);
    
ImageString ($im3377405"400:400"$text_color);
    
// Ausgabe des erstellten Images an den Browser
    
ImagePNG($im);
?>
Wenn es schon dieses Bild gibt, wird die Koordinate nur darüber gezeichnet.
Die Hintergrundfarbe übermalt nicht das vorhandene Bild, sie kommt nur zum Einsatz, wenn ihr ein Pixel löschen wollt.

Ich hoffe dies hat euch einen ersten Einblick in die Möglichkeiten der Grafikerstellung mittels PHP verschafft.
Wenn ihr mehr wissen wollt, dann findet ihr eine Funktionssammlung und Erklärung unter www.php.net/image

Geändert von Jann Hendrik (22.06.2007 um 08:09 Uhr). Grund: php-info.org - link entfernt.
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.08.2005, 15:30 Nach oben    #2
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Ergänzung zum Tutorial

ImageCreate() oder ImageCreateTrueColor ?()

In vielen Tutorials wird ImageCreate() zum erstellen von Bildern benutzt,
und nicht sehr selten wundert sich der ein oder andere darüber, dass seine Bilder etwas komisch aussehen.
Das Bilder nicht in voller Farbenbracht erstellt werden.

Meist wird dies bemerkt, wenn man Bilder bzw. Fotos mittels
  • ImageCreateFromJPEG
  • ImageCreateFromPNG
lädt um damit z.B. Thumbnails oder nur Kopien zu erstellen.

So wird auch im Manuell zu PHP darauf hingewiesen ImageCreateTrueColor() zu benutzen.
http://www.php.net/imagecreate

Der Grund dafür liegt ist wie folgt:

ImageCreate() erstellt nur Bilder mit max. 256 Farben.
Auch wenn man 24bit-Bilder (3x 8bit) lädt kommen nur Bilder mit max. 256-Farben heraus.

ImageCreateTrueColor() behebt nun dieses Problem und das Urlaubsfoto kann mit voller Farbanzahl erstellt werden.

Kleine Übersicht
  • ImageCreate()
    PNG -> 8bit mit 256 Farben
    JPEG -> 24bit jedoch nur mit max. 256 Farben
  • ImageCreateTrueColor()
    PNG -> 24bit bzw. 32bit
    JPEG -> 24bit TrueColor

Zur Erstellung von Diagrammen reicht sicherlich auch ImageCreate(),
aber in Verbindung mit Fotos sollte man auf ImageCreateTrueColor() nicht verzichten.

Geändert von Ben (05.12.2005 um 10:05 Uhr).
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] vCard PHP Parser Jann Hendrik Tutorials 0 22.08.2007 10:24
[PHP] Mit PHP dynamisch einen RSS-Feed aktualisieren Jann Hendrik Tutorials 0 13.03.2007 09:52
[PHP] Simples Caching System mittels Dateien Chr!s Tutorials 5 04.11.2006 23:55
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
[PHP] Kontrollstrukturen in PHP Jann Hendrik Tutorials 7 09.12.2004 21:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:11 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44