Hallo und guten Nachmittag Herr Autor ;-)
[...] imagejpeg($diagramm, "test.jpg");
also halten wir mal fest: Dieses Script gibt eine JPEG-Bildressource aus. Wobei ich ehrlich gesagt noch den Header "Content-Type: image/jpeg" vermisse; ich weiß aber nicht, ob imagejpeg() das nicht möglicherweise von sich aus erledigt.
Ja, es macht aus dem Pixelhaufen (hier 4 Bytes im Speicher pro Pixel) eine JPEG-Datei. Wenn man den Dateinamen weglässt, wird statt in eine Datei auf der Platte in die Standard-Ausgabe (also in diesem Fall der Kanal zum Browser) geschrieben.
JPEG-Dateien enthalten keine HTTP-Header ;-)
Wenn man die Datei also zum Browser schicken will, muss man vorher den passenden Header senden (setzen), wenn sie denn vom Browser auch als Bilddatei verstanden werden soll.
Grüße
TS