Probleme mit GD
Chris Weber
- perl
Hallo,
ich versuche mich gerade in GD einzuarbeiten und habe das kleine einleitende Beispiel abgeschrieben, das man in der Doku zu GD findet. Hier der Quelltext:
use GD;
$im = new GD::Image(100,100);
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red = $im->colorAllocate(255,0,0);
$blue = $im->colorAllocate(0,0,255);
$im->transparent($white);
$im->interlaced('true');
$im->rectangle(0,0,99,99,$black);
$im->arc(50,50,95,75,0,360,$blue);
$im->fill(50,50,$red);
binmode STDOUT;
$gif_data = $im->gif;
open(OUT, ">test.gif");
print OUT $gif_data;
close(OUT);
Ich habe nur die letzten 4 Zeilen geändert so daß alles in eine Datei geschrieben und nicht auf der Kommandozeile ausgegeben wird. So und jetzt zum Problem: Die Datei "test.gif" kann von keinem Grafikprogramm geoeffnet werden ! Wenn ich das Bild in eine HTML-Seite einfüge wird es zwar angezeigt, jedoch verzerrt, d.h. mit vielen seltsagen roten Streifen drin. Was soll das ? Ich habe das ganze mit ActivePerl versucht und auch GD von ActiveState runtergeladen für den Fall das das relevant ist.
Danke
Chris Weber
Hallo auch,
Ich arbeite auch mit GD und lasse Images erstellen, die ich dann speichere. Auf diese Dateien referenziere ich dann mit einer URL. Im Vergleich zu meinem Skript fallen mir folgende Unterscheide auf.
binmode STDOUT;
Diese Zeile muß man löschen. Diese ist nur wichtig, wenn das Image direkt an den Browser geschickt werden soll.
$gif_data = $im->gif;
Dieses umkopieren ist nicht notwendig. Sollte aber nichts mit Deinem Problem zu tun haben.
print OUT $gif_data;
Bei mir sieht das So aus
print OUT $im->gif;
Ich denke, daß es nur was mit der Zeile binmode STDOUT zu tun hat.
Gruß Hansi
Hi,
binmode STDOUT;
Diese Zeile muß man löschen. Diese ist nur wichtig, wenn das Image direkt an den Browser geschickt werden soll.
sie schadet aber nicht. Wenn nach STDOUT nichts geschickt wird, naja, dann ist es doch egal, welcher Modus gerade vorliegt :-)
print OUT $gif_data;
Bei mir sieht das So aus
print OUT $im->gif;Ich denke, daß es nur was mit der Zeile binmode STDOUT zu tun hat.
Ich denke eher, daß ein
binmode OUT;
_vor_ der print-Zeile fehlt. Auf "archaischen" Systemen (bei Perl ist damit alles außer Linux gemeint *g*) ist dieser binmode wichtig, weil sonst alle Umbrüche umgewandelt werden.
Cheatah
Hallo Cheatah,
Ich denke eher, daß ein
binmode OUT;
_vor_ der print-Zeile fehlt. Auf "archaischen" Systemen (bei Perl ist damit alles außer Linux gemeint *g*) ist dieser binmode wichtig, weil sonst alle Umbrüche umgewandelt werden.Cheatah
danke fuer den Tip. Das mit binmode OUT; hat geklappt und das tolle mit rot gefüllte Oval glotzt mich jetzt auch an *g*.
Danke noch mal
Chris Weber