Mehrere Grafiken zusammen ausgeben?
Markus Pitha
- perl
0 MudGuard
Nabend,
Als ich mit meinem bereits eingerosteten Perl versuchte einen einfachen Grafikcounter, der bei jedem Klick weiterzählt zu realisieren, staunte ich nicht schlecht als ich draufkam, dass ich bei Grafiken nicht so vorgehen kann, wie bei normalem Text, was die Ausgabe betrifft.
Ich kann irgendwie nur eine (die erste) Grafik ausgeben, und die nächste(n) Grafik(en) werden einfach unter den Tisch fallen gelassen. Danach dachte ich an eine "Verkettung" von Grafiken, damit ich sie vielleicht zusammen als einen String ausgeben kann, aber ich wüsste nicht wie? Hat jemand einen sinnvollen Ansatz? Also nochmal: Es wird immer nur die erste Stelle der Zahl ausgegeben. bei 23 also 2. Bei 156 die Eins.
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my @ziffern = qw(null eins zwei drei vier fuenf sechs sieben acht neun);
my @counterwert = ();
open FILE, "+<counter.txt" or die "Kann counter.txt nicht öffnen: $!\n";
flock FILE, 2;
my $zahl = <FILE>;
seek FILE, 0, 0;
truncate FILE, 0;
print FILE ++$zahl;
close FILE;
#Grafiken laden
for(my $i = 0; $i <= 9; $i++) {
open IMAGE, "ziffern/$ziffern[$i].jpg" or die "Kann ziffern/$ziffern[$i].jpg nicht lesen :$!\n";
binmode IMAGE; #wegen Windows
undef $/; #wichtig, damit Bild nicht zeilenweise eingelesen wird.
$ziffern[$i] = <IMAGE>;
close IMAGE;
}
print "Content-Type: image/jpg\n\n";
binmode STDOUT;
while ($zahl =~ /(\d)/g) {
print STDOUT $ziffern[$1];
}
Markus.
Hi,
Als ich mit meinem bereits eingerosteten Perl versuchte einen einfachen Grafikcounter, der bei jedem Klick weiterzählt zu realisieren, staunte ich nicht schlecht als ich draufkam, dass ich bei Grafiken nicht so vorgehen kann, wie bei normalem Text, was die Ausgabe betrifft.
Ich kann irgendwie nur eine (die erste) Grafik ausgeben,
Richtig. HTTP ist so aufgebaut, daß auf eine Anfrage genau eine Ressource als Antwort kommt.
Bau serverseitig aus den Einzelbildchen _EINE_ Grafik zusammen.
cu,
Andreas
Hallo,
Bau serverseitig aus den Einzelbildchen _EINE_ Grafik zusammen.
Eben, aber wie kann ich das anstellen? Ich weiß leider nicht mal, wie eine Grafik aufgebaut ist.
Markus.
Nachtrag:
Ich habe eine mögliche Lösung gefunden. Mithilfe von Image::Magick und der "Montage"-Methode kann ich Felder von Grafiken zu einer Einzigen verschmelzen lassen. Ich glaube, ich sollte es so weit hinkriegen, dass ich den Counter diesbezüglich anpassen kann. Die Ausgabe von mehreren Grafiken wurde in meinem Beispiel getestet und funktioniert.
P.S Eines verwirrt mich nur bei Image Magick.
Schreibe ich ...
$images->Read("ziffern/$ziffern[$i].jpg") or die ..... $!
..bekomme ich einen Fehler, dass Verzeichnis oder Datei nicth existiert, obwohl es 100%ig existiert.
Schreibe ich hingegen...
$images->Read("ziffern/$ziffern[$i].jpg") and die ..... $!
...funktioniert es? Kann mir jemand diese, meiner Meinung nach etwas seltsame Logik erklären?
Markus.