Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] GD-Funktionen Problem.



Blakkeight
22.11.2006, 19:19
Hi Leute, ich will mir ein Bild generieren aber es geht leider nicht. ;(

Hier der Code:



header("Content-type: image/jpeg");
$zahlen = rand(1000,9999);
$bild = ImageCreate(50,20);
$back = imagecolorallocate($bild, 0, 0, 0);
$font = imagecolorallocate($bild, 255, 0, 0);
ImageString($bild, 3, 1, 1, $zahlen, $font);
imagejpeg($bild);
imagedestroy($bild);


Es wuerd nur eine Weiße Seite ausgegeben mit dem link der die Datei aufruft wo dieser Code enthalten ist.

Wenn ich header() weglasse wuerd die Seite zwar angezeigt aber an der stelle wo das Bild sein soll ist dann irgend ein Buchstabensalat. ;(

Kann mir da jemand helfen?

<edit>
Offline mit XAMPP Funktioniert es.
</edit>

mitaki
22.11.2006, 20:23
Es wuerd nur eine Weiße Seite ausgegeben mit dem link der die Datei aufruft wo dieser Code enthalten ist.
Meinst du damit eine Fehlerseite, wie sie üblicherweise vom Firefox ausgegeben wird?
Das weist normalerweise darauf hin, dass der erzeugte Code des Bildes unvollständig geladen werden konnte oder fehlerhaft ist.
Versuch mal ein anderes Graphikformat z.B. image/png.

Möglicherweise hast du auf deinem Server auch eine ältere oder fehlerhafte GD Version installiert, wodurch das Erzeugen eines Bildes verhindert wird.

Blakkeight
23.11.2006, 18:53
Nein.

Es wuerd einfach eine reine Weiße Seite mit nem Schwarzen Text angezeigt. =)

Und auf dem Server gehts ja, da is nix fehlerhaft. ;)


gruß jay

mitaki
23.11.2006, 20:41
Nein.
Was nein? Details?


Es wuerd einfach eine reine Weiße Seite mit nem Schwarzen Text angezeigt. =)
Das ist nicht wirklich hilfreich.


Es wuerd nur eine Weiße Seite ausgegeben mit dem link der die Datei aufruft wo dieser Code enthalten ist.
Das ist eine Fehlermeldung, mir bekannt, wenn Webseite falsche Informationen liefern.


ÿØÿà
Das wäre Buchstabelsalat.

Welchen Text meinst du also, bring doch auch mal eine Testseite ins Spiel, damit wir sehen können, wo dein Problem liegt.


Offline mit XAMPP Funktioniert es.

Und auf dem Server gehts ja, da is nix fehlerhaft.
Nur eines von beiden, bitte Entscheide dich.


Es wuerd einfach
Es waer einfacher wenn du wird oder wuerde schreiben würdest, bei einer Mischform kommt man da durcheinander.

Lucleonhart
24.11.2006, 06:37
Mitaki Mitaki...
Man kann auch Beiträge zweimal lesen, wenn man sie beim ersten mal nicht versteht.

Nundenn...
Wenn ein Bildausgabescript einfach nur seinen Namen hinschreibt, konnte der Server das Script nicht verarbeiten.. Ich würde alles auskommentieren, und dann nach und nach den code wiederherstellen, bis der fehler auftritt.
Also zunächst nur Bild erzeugen -> Ausgeben. Dann kannste sehen, an welcher Funktion es liegt.. oder ob dein Server überhaupt keine Bilder gebacken bekommt. Probier vielleicht auch mal nen anderen Typ, png oder so.

Ich hatte das Problem erst vorgestern. Bei mir lag es daran, das ich ein 400kb großes Bild in ein neu erzeugtes kopieren wollte.. Das hat er nicht gebacken bekommen... Als es nurnoch 100kb groß war hats gefunzt. Versteh einer die Scripte. ;)

BTW: Bei mir funzt es: http://www.lucleonhart.de/try/imagetest.php

EDIT: Mitaki, wenn du den Fehler nicht kennst: So sieht das falsche bei mir aus -> http://www.lucleonhart.de/try/mapcreate.php

Lukas
24.11.2006, 13:21
Ich hatte das Problem erst vorgestern. Bei mir lag es daran, das ich ein 400kb großes Bild in ein neu erzeugtes kopieren wollte.. Das hat er nicht gebacken bekommen... Als es nurnoch 100kb groß war hats gefunzt. Versteh einer die Scripte. ;)Ich mutmasse jetzt einfach mal, dass das mit dem RAM-Limit fuer PHP zusammen haengt. PHP arbeitet im RAM mit unkomprimierten Bildern, sprich, wenn du ein 400 KB-Bild hast, braucht es deutlich mehr RAM als 400 KB. Vermutlich ist dem Ding da einfach der Speicher ausgegangen.

mitaki
24.11.2006, 22:09
Man kann auch Beiträge zweimal lesen, wenn man sie beim ersten mal nicht versteht.
Widersprüche bleiben Widersprüche, das ändert sich auch beim X-ten lesen nicht.


Mitaki, wenn du den Fehler nicht kennst: So sieht das falsche bei mir aus ->
Doch, es war mir nur nicht bekannt, dass dies ein PHP Fehler ist. Ich dachte, das sei eine Meldung die der Firefox produziert (daher hab ich es hier so bezeichnet).

Blakkeight
25.11.2006, 12:23
Ich versteh es nicht.

Das ist der Code mit Header() und das bild als .gif

http://brueggex.de/jay/code.php


header("Content-type: image/gif");
$zahlen = rand(1000,9999);
$bild = ImageCreate(50,20);
$back = imagecolorallocate($bild, 0, 0, 0);
$font = imagecolorallocate($bild, 255, 0, 0);
ImageString($bild, 3, 1, 1, $zahlen, $font);
imagegif($bild);
imagedestroy($bild);
Der Funktioniert auf einmal aber wenn ich das auf meiner Webseite Intigriere, wird dieser Fehler angezeigt: "Die Grafik "http://brueggex.de/network/bbn/index.php?main=gb" kann nicht angezeigt werden, weil sie Fehler enthält."

Das ist der Code ohne Header() und das bild als .gif

http://brueggex.de/jay/code2.php



$zahlen = rand(1000,9999);
$bild = ImageCreate(50,20);
$back = imagecolorallocate($bild, 0, 0, 0);
$font = imagecolorallocate($bild, 255, 0, 0);
ImageString($bild, 3, 1, 1, $zahlen, $font);
imagegif($bild);
imagedestroy($bild);

Und das ist halt der "Buchstabensalat".

Gruß Jay

ps: @mitaki, sry das ich mich so unverstaendlich ausgedrueckt habe.

Manni
25.11.2006, 12:27
Bei mir funktioniert die erste Version. Das heißt, dass das Problem wahrscheinlich eher an deinem Browser als an der PHP-Datei oder dem Server liegt...

Blakkeight
25.11.2006, 13:31
Ich sagte ja die Erste Datei geht ja, nur halt nicht wenn ich den Code in meine Webseite einbaue.

Da kommt dann diese: "Die Grafik "http://brueggex.de/network/bbn/index.php?main=gb" kann nicht angezeigt werden, weil sie Fehler enthält." Fehlermeldung.

mitaki
25.11.2006, 17:48
Wie baust du die Graphik in die Webseite ein?

Blakkeight
25.11.2006, 18:26
Der Code der Oben gezeigt wird, wird auch so in die Datei eingebunden(ganz oben), die wiederum Includiert wird.

drunken monkey
25.11.2006, 19:17
Der Code der Oben gezeigt wird, wird auch so in die Datei eingebunden(ganz oben), die wiederum Includiert wird.
Meinst du damit etwa, dass du die Datei, die das Bild erstellst in die, die es (zusammen mit anderem Inhalt) anzeigen soll, per include () einfügst? o_O

Wenn ja, dann ist's klar. Du musst das mittels

<img src = "image.php" />
einbinden, dann klappt's! ;)

Edit: ad 1: Bei mir schon! :p
ad 2: UND ICH HABE DEN DOCTYPE VERGESSEN!!! :eek: :eek: :eek:
:rolleyes:

mitaki
25.11.2006, 22:22
Dazu ein paar Korrekturen.

Zwischen Attributnamen und dem Gleicheitszeichen gibt es keine Leerzeichen.
<img /> MUSS ein alt-Attribut besitzen. Auch wenn dieses Leer sein sollte.

Richtig:

<img src="image.php" alt="Alternativ- oder Leertext" />


ad 1: Bei mir schon!
Pech für dich, dann ist's wohl um die Besucher auch nicht schade.


UND ICH HABE DEN DOCTYPE VERGESSEN!!!
Abgesehen davon, dass man bei einem einzigen Element als Beispiel diese nicht benötigt, fehlt insgesamt ein HTML-Grundgerüst und die Beachtung der Regel, dass Inline-Elemente nur innerhalb von Blockelementen vorkommen dürfen.

Blakkeight
29.11.2006, 18:32
Jut klappt alles, danke an euch!