Ricardo Scholz: Mit Perl-Script Grafik anzeigen

Hallo,

Seit kurzem beschaeftige ich mich jetzt mit CGI. Für die Scripte verwende ich Perl.
Das funktioniert auch schon ganz gut, zumindest HTML-Code erzeugen. Ich hab nur ein Problem. Ich schaff es einfach nicht eine Grafik durch ein Perl-Script anzeigen zu lassen. Das ich ich ganze mit <img src="/cgi-bin/bild.pl"></img> (Pfade und Webservereinstellung sind korrekt) aufrufen muss ist schon klar, es steht ja auch so in Selfhtml :-), aber was muß dann in der Perl-Datei stehen? Leider hat auch das Durchforsten einiger Perl-Referenzen nichts gebracht. Vielleicht hab ich's auch nicht gefunden.
Ich hoffe mir kann jemand helfen.

Gruss
Ricardo Scholz

  1. aber was muß dann in der Perl-Datei stehen?

    #!/usr/bin/perl

    print "Content-Type: image/gif\n\n";

    open (DATEI, "bild.gif");
    binmode(DATEI);
    binmode(STDOUT);
    print <DATEI>;
    close(DATEI);
    exit(0);

    Wenn du das Bild noch verändern willst, soltest du dir die Doku zum Modul GD.PM durchlesen.

    Henning

  2. Ich hab nur ein Problem. Ich schaff es einfach nicht eine Grafik durch ein Perl-Script anzeigen zu lassen.

    Was genau willst Du erreichen?

    a) eine bestehende, statisch vorliegende Datei lesen und ausgeben?
    Hierzu ist die Lösung bereits gepostet worden (es fehlt allerdings noch der MIME,Typ, denke ich), aber das macht m. E. wenig Sinn.

    b) Eine Graphik selbst erstellen?
    Das wäre ein längeres Thema, in Richtung Graphikformate usw.

    Das ich ich ganze mit <img src="/cgi-bin/bild.pl"></img> (Pfade und Webservereinstellung sind korrekt) aufrufen muss ist schon klar, es steht ja auch so in Selfhtml :-),

    Hm, ich überlege gerade, woher der Browser jetzt wissen soll, ob Dein Perl-Skript ein GIF oder ein JPG erstellt hat - wahrscheinlich am Header, der den MIME-Typ mitschicken muß. Diesen müßtest Du also auf jeden Fall passend erzeugen - und danach dann eben das Bild in dem entsprechenden Format.

    aber was muß dann in der Perl-Datei stehen? Leider hat auch das Durchforsten einiger Perl-Referenzen nichts gebracht.

    Wenn ich Dein Problem richtig gedeutet haben sollte, dann wirst Du in Perl auch nichts finden, sondern eben in der Beschreibung des Datenformats, welches Du erzeugen willst.
    (Falls Du jetzt anfangen willst, ein Programm zu schreiben, das Graphiken erstellt, dann würde ich Dir empfehlen, gleich PNG-Format zu erstellen.)

  3. Hallo Ricardo,

    mit PERL/CGI ein Image zum Browser schicken geht z.B. so wie Henning (danke Henning) schon postete...

    Oder du erstellst in deinem Script mit print() eine komplette HTML Seite mit dem Image-Tag irgendwo im Body

    ---schnipp---
    print "content-type: text/html\n\n";
    print "html ... bis body";
    ...
    print "<img src='http:/oder/anderer/pfad/*.gif'>";
    ...
    ---schnapp---

    In Beispiel kann die Imagedatei entweder

    • lokal liegen, Pfadangabe relativ oder absolut
      oder
    • im web liegen, Pfadangabe relativ ("/dirx/*.gif") oder absolut ("http://hostname/dirx/*.gif")

    Wo das Image NICHT liegen darf: im physischen Pfad von /cgi-bin/. !!!

    Viele Grüße, Rolf