Das geht sogar mit einem reinen Image-Formularelement (oder wie das hieß): Da werden x- und y-Koordinaten übergeben.
Weltkarte erstellen (dauert ewig)
Einklappen
X
-
Und mit Javascript ist das auch recht einfach machbar (sry, wenns Tippfehler hat):
Code:function elOffset(e){ var t = 0, l = 0; do{ t += e.offsetTop || 0; l += e.offsetLeft || 0; e = e.offsetParent; if(e && e.tagName.toUpperCase() == "BODY"){break;} }while(e); return [l, t]; } function getRelativePosition(e){ e = e || window.event; var x, y, t = e.target || e.srcElement, o = elOffset(t); if(window.attachEvent && navigator.userAgent.indexOf("Opera") == -1){ x = e.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft); y = e.clientY + (document.body.scrollTop || document.documentElement.scrollTop); }else{ x = e.pageX y = e.pageY } x -= o[0]; y -= o[1]; alert("x: " + x + "\ny: " + y) } document.getElementById("myImage").onclick = getRelativePosition;
Kommentar
-
sry ich kann dir da grad nich ganz folgen.
Erstelle einmal ein Formular mit einem input type="image". Wenn du dann das Formular per GET überträgst lasse dir $_GET einmal mit prin_r ausgeben, wenn per POST mach ein print_r($_POST); (Das Formular muss mit einem Klick auf den Bildbutton abgeschickt werden).
Dann wirst du sehen, was Pekka vorschlug. Sein Vorschlag ist je nach Situation besser als mit Javascript.
Kommentar
-
un ich kann mir jezt mit imagefilledrectangle dort 10000 rechtecke in das große bild malen lassen? oder gibs da ne begrenzung?
oder meintet ihr ne andere funktion um das große bild zu malen
ps: weil irgendwie stell ich grad fest das der mir nur (ka ahnung wieviel genau aber so ca 200 rechtecke macht dann is schluss)Zuletzt geändert von Besth; 08.06.2009, 00:22.Mess with the Besth, die like the rest!
Kommentar
-
Ich habe schon eine Karte gebaut und diese einfach nur als Bild angezeigt.
Mittels css die Links rübergesetzt und fertig.
Wo ist das Problem?
Und generell sollte man darauf achten, das du nicht zu viele Bilder lädst.
Pro Seite nicht mehr als 20, was man normal auch locker schafft.Gut geraten ist halb gewußt.
Kommentar
-
Das hilft mir jetzt aber nicht weiter.
An den 30sek wirds nicht liegen. Weil 1.bekommt man ja ne meldung und 2. Wird meine schleife ja diese 10000ma durchlaufen. Nur er malt nur die ersten 200 rechtecke und dann nix mehr aber die schleife läuft weiter.
Ich hab jetzt nur ein bild.
Und wie hast du das gemacht martinm79?
Hast du für jedes feld ein rechteck gemalt oder bin ich da am falschen ansatz?Mess with the Besth, die like the rest!
Kommentar
-
Also ich habe gerade testweise ein 1600x800 Bild völlständig übermalt, in dem ich 1.280.000 Mal imagefilledrectangle() aufgerufen habe. Funktioniert 1a und dauert keine ganze Sekunde.
Bist du dir sicher, dass du die Pixel wirklich ins Bild setzt? Wenn man Koordinaten außerhalb des Bildes angibt, dauert es deutlich länger oder schmiert ab.
Kommentar
-
hm habs grad nochma von vorn getestet.
irgendwie liegts an der farbe. kann mir den fehler nur noch nicht erklären. ich test ma noch weiter.
aber danke für deine hilfe schonma das du es bei dir ausprobiert hast.
ps: ja ich hab in meiner schleife die farbbestimmung mittels imagecolorallocate gemacht. das geht wohl so nicht weil das nur 254 mal geht.
danke für eure hilfe ich habs jetzt ^^
hab einfach die farbdefinition außerhalb der schleife - weil ich hab keine 254 verschiedenen farben - da gehts *puhh*Zuletzt geändert von Besth; 08.06.2009, 11:08.Mess with the Besth, die like the rest!
Kommentar
-
Du erzeugst jede Farbe hoffentlich nur einmal und nicht etwa für jedes Pixel erneut?!
Hier mein Code zum Vergleich.
PHP-Code:$width = 1600;
$height = 800;
$scale = 1;
// http://flatplanet.sourceforge.net/maps/images/earth-living.jpg
$im = imagecreatefromjpeg('images/earth-living.jpg');
$green = imagecolorallocate($im, 0x66, 0xcc, 0x66);
$blue = imagecolorallocate($im, 0x33, 0x99, 0xff);
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
imagefilledrectangle($im,
$x*$scale, $y*$scale,
$x*$scale+$scale, $y*$scale+$scale,
($x+$y)%2 ? $green : $blue);
}
}
header('Content-type: image/jpeg');
imagejpeg($im);
Kommentar
Kommentar