ich habe mein System mal aufs neueste Debian hochgezogen - natürlich
auch mit den neuesten Perl-Modulen etc.
imagemagick 6.3.7.9.dfsg2-1~lenny3
perlmagick 6.3.7.9.dfsg2-1~lenny3
GD - Interface to Gd Graphics Library 2.44
GD::SecurityImage Security image (captcha) generator. 1.70
Zur Erstellung der Grafik nutze ich das Magick per use
GD::SecurityImage use_magick => 1; - Grund - damit kann ich jpg-
Grafiken bauen. Mit GD gehen nur PNG und da glaube ich nicht an die
hundertprozentige Kompatibilität in allen Browsern.
Ich baue damit meine Captche-Bilder. Hat früher auch gut funktioniert.
Das Hauptproblem - jetzt scheint die Bezier-Funktion nicht mehr
ordentlich zu funktionieren. Wenn die Bezierkurve jetzt mit der
Vordergrundfarbe gezeichnet wird, dann wird der Bereich "dazwischen"
vom Startpunkt zum Endpunkt ... also als ob zwischen Startpunkt bis
zum Endpunkt eine Linie gezogen wird und der Bereich zwischen der
Linie und der Bezierkurve wird mit der Hintergrundfarbe gefüllt.
Früher war der Bereich durchsichtig. Jetzt kann man somit nicht mehr
erkennen, was dahinter gezeichnet wurde.
Das Bild erstelle ich so:
$image = GD::SecurityImage->new(width => 100,
height => 50,
lines => 15,
ptsize => $fontsize,
frame => 0,
bgcolor => $backgroundcolor,
font => $font,
scramble => 1);
Dann male ich mit Hilfe der SecurityImage Funktionen die Zahlen und
dann nutze ich die ImageMagick Funktion, um die Bezier-Kurve zu malen.
$image->{image}->Draw(
primitive => 'bezier',
points => $liste_mit_punkten,
stroke => $textcolor,
strokewidth => 2,
antialias => $antialias);
Hierbei wird jetzt oben genannte Bezier-Kurve gezeichnet.
Jemand ne Idee was ich machen muß, damit die Kurve wieder mit
durchsichtigem Hintergrund gezeichnet wird ? Irgndwie habe ich bei der
Durchsicht der ImageMagick Funktionen dazu nichts gefunden oder
übersehen.
MFG
Christoph
- - schrieb:
> Ich baue damit meine Captche-Bilder. Hat fr�her auch gut funktioniert.
> Das Hauptproblem - jetzt scheint die Bezier-Funktion nicht mehr
> ordentlich zu funktionieren. Wenn die Bezierkurve jetzt mit der
> Vordergrundfarbe gezeichnet wird, dann wird der Bereich "dazwischen"
> vom Startpunkt zum Endpunkt ... also als ob zwischen Startpunkt bis
> zum Endpunkt eine Linie gezogen wird und der Bereich zwischen der
> Linie und der Bezierkurve wird mit der Hintergrundfarbe gef�llt.
> Fr�her war der Bereich durchsichtig. Jetzt kann man somit nicht mehr
> erkennen, was dahinter gezeichnet wurde.
Das JPG Format kennt keine durchsichtigen Bildteile.
PNG kann das.
vg,
Wolfgang
--
From-address is Spam trap
Use: wolfgang (dot) mahringer (at) sbg (dot) at
Das ist mir klar - aber das will ich ja auch nicht. Du sprichst davon,
daß das Bild selbst durchsichtige Bestandteile hat - ich nur von einer
Linie, wo nur die Linie gemalt werden soll. Im übrigen hat es ja schon
funktioniert - nur nach dem Update der Software nicht mehr.
Ich will einfach, daß da eine Kurve gezeichnet wird ohne daß der
Zwischenraum auch noch gefüllt wird.
Vielleicht mal anders erklärt ... stell dir ein U vor ... die Linie
vom U ist die gewollte Kurve in der Vordergrundfarbe. Vorher wurde
innerhalb der U-Kurve ein kleiner Kreis gezeichnet in der
Vordergrundfarbe. Jetzt nach dem Update wurde also danach das U
gezeichnet. Aber der Zwischenraum vom U wurde mit der Hintergrundfarbe
gefüllt. Somit ist also der Kreis nicht mehr sichtbar ... das meinte
ich mit durchsichtig. Das war vorher nicht so - also jetzt bezogen auf
die Bezier-Kurve.
Bei der GD Library habe ich entsprechende Funktionen gefunden, wo mit
oder ohne Füllung und so - aber ich nutze ja die ImageMagick
Funktionen, somit bringen mir die GD Funktionen nichts.
MFG
Christoph
Bei ImageMagick �ndert sich gerne mal die API. Musst du
auf www.imagemagick.org suchen und rumprobieren, denke ich.
Hier in der Perl-NG bist du mit der Frage eher falsch.
Gr��e
Frank
--
Dipl.-Inform. Frank Seitz
Anwendungen f�r Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Homepage: http://www.fseitz.de/
XING-Profil: http://www.xing.com/profile/Frank_Seitz2
Die Seite hatte ich auch schon durchgeschaut - hatte aber auch diesmal
nicht auf Anhieb die Lösung gefunden. Erst bei der Überprüfung der
Lösung kam es mir dann logisch vor. :)
Und zwar mußte ich beim Draw noch ein " fill => 'none' " mit einfügen.
In der Doku steht natürlich " fill => color_name " und deswegen hatte
ich das nicht für notwendig gesehen, weil ich ja keine Farbe haben
möchte ... und das kann auch "none" sein oder auch "transparent", wenn
man sich dann doch mal die Werte für color_name anguckt.
Die Lösung hatte ich aber irgendwo anders in einem Beispiel gefunden.
MFG
Christoph