php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.05.2009, 10:20  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard [Erledigt] foreach schleife beim erstellen einer image_map schlägt fehl

HAllo Leute,

also mal kurz die Beschreibung meines Zieles, was ich fast erreicht habe.

Also ich will eine image_map mit den Funktionen der GDLib und PHP erstellen. Ich habe dazu ein Array mit allen Buchstaben des Alphabetes und generiere dann in einer foreach Schleife für jeden Buchstaben ein neues Bild mit dem array_value des Arrays. Am Ende habe ich ein großes Bild und lege die vielen kleinen Bidler mit imagecopy da rein, das alles klappt auch wunderbar, nur wird immer nur der letzte Buchstabe des Arrays auf jedes kleine Bild gelegt. Ich will aber das jedes kleine Bild einen anderen Buchstaben aus dem Array hat bis das ganze Alphabet auf der image_map liegt.

Das momentane Ergebnis könnt Ihr hier sehen http://www.lit-web.de/image-map/

Und hier der Quellcode mal dazu.
PHP-Code:
error_reporting(E_ALL);
$image_width 100//breite des bildes
$image_height 100//höhe des bildes
$font "tahoma.ttf";
$font_size 50//schriftgröße
$text = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //text der ins bild soll
//abmasungen für mappe erstellen
$map_width $image_width 6//breite des großen bildes
$map_height $image_height 5//höhe des großen bildes
$image_map imagecreate($map_width,$map_height); //großes bild erstellen
$bg imagecolorallocate($image_map229229229); //großes bild mit farbe füllen

//für jeden buchstaben im alphabet ein bild krieren mit dem buchstaben als text
foreach($text as $text_value)
{
 
$image imagecreate($image_width,$image_height); //kleine bilder erstellen
 
 
$bg_color imagecolorallocate($image204204204); //hintergrundfarbe kleine bilder
 
 
$font_color imagecolorallocate($image000); //textfarbe kleine bilder
 
 //kleine bilder mit farbe füllen
 
imagefilledrectangle($image00$image_width$image_height$bg_color);
 
 
//größe der ttf schrift ermitteln
 
$size imagettfbbox($font_size0$font$text_value);
 
 
$x_br $size[2] - $size[0]; //x koordinate der ttf ermitteln
 
 
$y_he $size[5] - $size[1]; //y koordinate der ttf ermitteln
 
 
$x = ($image_width $x_br) / 2//zentrierung der ttf auf x koordinate errechnen
 
 
$y = ($image_height $y_he) / 2//zentrierung der ttf auf y koordinate errechnen
 
 //bildtext mit errechneten koordinaten erstellen und auf kleine bilder legen
 //mit buchstaben aus dem alphaber array
 
$image_string imagettftext($image$font_size0$x$y$font_color$font$text_value);
 
 
//erste reihe mit 6 bildern
 
imagecopy($image_map$image0000$image_width$image_height);
 
imagecopy($image_map$image$image_width000$image_width$image_height);
 
imagecopy($image_map$image$image_width 2000$image_width$image_height);
 
imagecopy($image_map$image$image_width 3000$image_width$image_height);
 
imagecopy($image_map$image$image_width 4000$image_width$image_height);
 
imagecopy($image_map$image$image_width 5000$image_width$image_height);
 
 
//2 reihe mit 6 bildern
 
imagecopy($image_map$image0$image_height00$image_width$image_height);
 
imagecopy($image_map$image$image_width$image_height00$image_width$image_height);
 
imagecopy($image_map$image$image_width 2$image_height00$image_width$image_height);
 
imagecopy($image_map$image$image_width 3$image_height00$image_width$image_height);
 
imagecopy($image_map$image$image_width 4$image_height00$image_width$image_height);
 
imagecopy($image_map$image$image_width 5$image_height00$image_width$image_height);
 
 
//3 reihe erstellen
 
imagecopy($image_map$image0$image_height 200$image_width$image_height);
 
imagecopy($image_map$image$image_width$image_height 200$image_width$image_height);
 
imagecopy($image_map$image$image_width 2$image_height 200$image_width$image_height);
 
imagecopy($image_map$image$image_width 3$image_height 200$image_width$image_height);
 
imagecopy($image_map$image$image_width 4$image_height 200$image_width$image_height);
 
imagecopy($image_map$image$image_width 5$image_height 200$image_width$image_height);
 
 
//4 reihe erstellen
 
imagecopy($image_map$image0$image_height 300$image_width$image_height);
 
imagecopy($image_map$image$image_width$image_height 300$image_width$image_height);
 
imagecopy($image_map$image$image_width 2$image_height 300$image_width$image_height);
 
imagecopy($image_map$image$image_width 3$image_height 300$image_width$image_height);
 
imagecopy($image_map$image$image_width 4$image_height 300$image_width$image_height);
 
imagecopy($image_map$image$image_width 5$image_height 300$image_width$image_height);
 
 
//5 reihe erstellen
 
imagecopy($image_map$image0$image_height 400$image_width$image_height);
 
imagecopy($image_map$image$image_width$image_height 400$image_width$image_height);
}
header("Content-type: image/png");
imagepng($image_map);
imagedestroy($image_map); 
Ich kann da keinen Fehler im Prinzip finden. Da das eine ziemlich spzielle Sache ist konnte ich weder bei Google noch in der Boradsuche was finden.

Könnt Ihr mir weiterhelfen was ich da noch falsch mache? Denn eigentlich funzt es ja, nur das mit der foreach Schleife nicht. Ich habe den Code ausreichend kommentiert.

Vielen Dank für eure Hilfe Gruß litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.05.2009, 11:33  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Du überschreibst jedes mal alle deine Maps.
__________________
Gruss
L
lazydog ist offline  
Alt 25.05.2009, 11:35  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Wie kann ich das denn da aber anders machen?

Weil es sollen ja bei jedem Buchstaben des Array ein neues Bild generiert werden und dann auf das große drauf kopiert werden. Wie gesagt das drauf kopieren geht ja auch, nur aber eben das nur der letzte Buchstabe auf den Bildern steht.

Ich komme momentan nicht drauf wie ich das anders machen soll. Weil ich bin davon ausgegangen durch die foreach Schleife geht das.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 25.05.2009, 11:42  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Wie gesagt das drauf kopieren geht ja auch, nur aber eben das nur der letzte Buchstabe auf den Bildern steht.
Weil, wie gesagt, alle Buchstaben jedes mal überschrieben werden. Du erstellst ja mit jedem Durchgang 26 neue Bilder.
Was du brauchst geht in etwa so:
PHP-Code:
....
$text range('A''Z');
$map_width $image_width 6//breite des großen bildes
$map_height $image_height 5//höhe des großen bildes
$image_map imagecreate($map_width,$map_height); //großes bild erstellen
$bg imagecolorallocate($image_map229229229); //großes bild mit farbe füllen

$x1 0;
$y1 0;
foreach(
$text as $text_value){
     ....
     
// Kleines Bild erstellen
     
....
     
     
$x1 $x1 $image_width;
     
imagecopy($image_map$image$x1$y100$image_width$image_height);
     
$x1 ++;
     if ((
$x1 6) == 0){
         
$x1 0;
         
$y1 += $image_height;
     }
}
header("Content-type: image/png");
imagepng($image_map);
imagedestroy($image_map); 
__________________
Gruss
L
lazydog ist offline  
Alt 25.05.2009, 12:02  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ok das klappt noch nciht so ganz.

Momentanes Ergebnis http://www.lit-web.de/image-map/

Und hier der jetzige Code.

PHP-Code:
error_reporting(E_ALL);
$image_width 100//breite des bildes
$image_height 100//höhe des bildes
$font "tahoma.ttf";
$font_size 50//schriftgröße
$text range('A','Z'); //text der ins bild soll
//abmasungen für mappe erstellen
$map_width $image_width 6//breite des großen bildes
$map_height $image_height 5//höhe des großen bildes
$image_map imagecreate($map_width,$map_height); //großes bild erstellen
$bg imagecolorallocate($image_map229229229); //großes bild mit farbe füllen
$x1 0;
$y1=0;
//für jeden buchstaben im alphabet ein bild krieren mit dem buchstaben als text
foreach($text as $text_value)
{
 
$image imagecreate($image_width,$image_height); //kleine bilder erstellen
 
 
$bg_color imagecolorallocate($image204204204); //hintergrundfarbe kleine bilder
 
 
$font_color imagecolorallocate($image000); //textfarbe kleine bilder
 
 //kleine bilder mit farbe füllen
 
imagefilledrectangle($image00$image_width$image_height$bg_color);
 
 
//größe der ttf schrift ermitteln
 
$size imagettfbbox($font_size0$font$text_value);
 
 
$x_br $size[2] - $size[0]; //x koordinate der ttf ermitteln
 
 
$y_he $size[5] - $size[1]; //y koordinate der ttf ermitteln
 
 
$x = ($image_width $x_br) / 2//zentrierung der ttf auf x koordinate errechnen
 
 
$y = ($image_height $y_he) / 2//zentrierung der ttf auf y koordinate errechnen
 
 //bildtext mit errechneten koordinaten erstellen und auf kleine bilder legen
 //mit buchstaben aus dem alphaber array
 
$image_string imagettftext($image$font_size0$x$y$font_color$font$text_value);
 
 
$x1 $x1 $image_width;
 
 
//erste reihe mit 6 bildern
 
imagecopy($image_map$image$x1$y100$image_width$image_height);
 
 
$x1 ++;
 if ((
$x1 6) == 0)
 {
  
$x1 0;
  
$y1 += $image_height;
 }
}
header("Content-type: image/png");
imagepng($image_map);
imagedestroy($image_map); 
Was mache ich da noch falsch?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 25.05.2009, 12:50  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Irgendetwas an den Berechnungen scheint nicht zu stimmen. Lass dir halt mal die Koordinaten(x1, y1) und den Wert jeweils ausgeben.
__________________
Gruss
L
lazydog ist offline  
Alt 25.05.2009, 12:50  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich habe es geschafft. So geht es.

Hier zu sehen http://www.lit-web.de/image-map/

Und hier der Code falls es mal jemand braucht.

PHP-Code:
error_reporting(E_ALL);
$image_width 100//breite des bildes
$image_height 100//höhe des bildes
$font "tahoma.ttf";
$font_size 50//schriftgröße
$text range('A','Z'); //text der ins bild soll
//abmasungen für mappe erstellen
$map_width $image_width 6//breite des großen bildes
$map_height $image_height 5//höhe des großen bildes
$image_map imagecreate($map_width,$map_height); //großes bild erstellen
$bg imagecolorallocate($image_map229229229); //großes bild mit farbe füllen
$x1 0;
$y1 0;
//für jeden buchstaben im alphabet ein bild krieren mit dem buchstaben als text
foreach($text as $text_value)
{
 
$image imagecreate($image_width,$image_height); //kleine bilder erstellen
 
 
$bg_color imagecolorallocate($image204204204); //hintergrundfarbe kleine bilder
 
 
$font_color imagecolorallocate($image000); //textfarbe kleine bilder
 
 //kleine bilder mit farbe füllen
 
imagefilledrectangle($image00$image_width$image_height$bg_color);
 
 
//größe der ttf schrift ermitteln
 
$size imagettfbbox($font_size0$font$text_value);
 
 
$x_br $size[2] - $size[0]; //x koordinate der ttf ermitteln
 
 
$y_he $size[5] - $size[1]; //y koordinate der ttf ermitteln
 
 
$x = ($image_width $x_br) / 2//zentrierung der ttf auf x koordinate errechnen
 
 
$y = ($image_height $y_he) / 2//zentrierung der ttf auf y koordinate errechnen
 
 //bildtext mit errechneten koordinaten erstellen und auf kleine bilder legen
 //mit buchstaben aus dem alphaber array
 
$image_string imagettftext($image$font_size0$x$y$font_color$font$text_value);
 
 
//$x1 = $x1 + $image_width;
 
 //erste reihe mit 6 bildern
 
imagecopy($image_map$image$x1 $image_width$y100$image_width$image_height);
 
 
$x1++;
 if ((
$x1 6) == 0)
 {
  
$x1 0;
  
$y1 += $image_height;
 }
}
header("Content-type: image/png");
imagepng($image_map);
imagedestroy($image_map); 
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 25.05.2009, 12:55  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Klar, das musste natürlich ein * anstelle des + sein.

und ... bitte, gern geschehen.
__________________
Gruss
L
lazydog ist offline  
Alt 25.05.2009, 13:04  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von lazydog Beitrag anzeigen
Klar, das musste natürlich ein * anstelle des + sein.

und ... bitte, gern geschehen.
Ahhh wo war ich bloß grad mit meinen Gedanken, bitte entschuldige, ist nicht meine Art ich bedanke mich immer für Hilfe.

Und nun auch an dieser Stelle hab recht vielen Dank für deine Hilfe. Bitte entschuldige das ich dies vergaß.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ReflectionClass export schlägt fehl bei Zugriff auf Klassenkonstante tereano PHP-Fortgeschrittene 4 30.03.2009 13:16
Checkboxen mit Schleife erstellen... N3R0 PHP Tipps 2009 7 02.01.2009 21:37
[Erledigt] foreach schleife Darstellungsfehler Chriss PHP Tipps 2008 22 31.10.2008 19:39
Eindimensionales Array ohne index per foreach erstellen phpbeginner PHP Tipps 2008 4 10.03.2008 14:18
.htaccess login schlägt fehl sternschnuppe99 Server, Hosting und Workstations 6 07.02.2008 13:37
login schlägt immer fehl sternschnuppe99 Server, Hosting und Workstations 3 07.02.2008 13:28
Variablenzuweisung PHP -> Javascript schlägt fehl Anotherone HTML, Usability und Barrierefreiheit 2 01.10.2007 15:14
foreach in for schleife matthros PHP Tipps 2006 11 25.07.2006 22:47
new DOMDocument() schlägt fehl PHP Tipps 2006 0 04.02.2006 15:21
[Erledigt] MySQL 4 installieren bei Linux schlägt fehl! Datenbanken 12 27.06.2005 17:15
werte aus einer foreach schleife in sql db einrtagen PHP Tipps 2005 3 31.05.2005 21:56
Schleife erstellen für Hitcounter PHP Tipps 2005 18 06.05.2005 18:10
Dateien löschen schlägt fehl - open_basedir restriction... c-f-g PHP Tipps 2005 7 28.04.2005 11:01
select-Menü mit Schleife erstellen Lia PHP Tipps 2005 12 25.01.2005 16:10
foreach schleife abbrechen PHP Tipps 2004 3 27.09.2004 18:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
wo gibt es die buchstaben mit den schleifen schrift für icq, schleife kleine bildchen, php bilder schleife erstellen, php ein großes bild erstellen und mit vielen kleinen füllen, www.php.de/php-einsteiger/55439-erledigt-foreach-schleife-beim-erstellen-einer-image_map-schlaegt-fehl.html, imagecopy schleife, errechnen eines bildes aus vielen kleinen bildern

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum