Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PNG -> PHP + javascript = kicha
marian8
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 3.12.2003
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


Generuje dynamicznie obrazek PNG poprzez php, ktory sie wyswietla prawidlowo. Problem w tym, ze obrazek przemieszcza sie za pomoca javascript i za kazdym ruchem glupek czyta ponownie ten obrazek. Jak obrazek to "obrazek.png" jest OK, ale jak obrazek generuje "obrazek.php" to wlasnie dzieja sie takie cyrki.
Jedyne co mi do glowy przychodzi to ze poza header("Content-type: image/png") trzeba wyslac jeszcze jakis naglowek.
za wszelka pomoc z gory dziekuje
Go to the top of the page
+Quote Post
chfast
post
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Hm.. nigdy się nie bawiłem obrazkami, ale czy nie można za pomocą skryptu php (np. png.php) stworzyć obrazek w innym pliku (np. obrazek.png) i dopiero potem wczytać przez javascript ten drugi??


--------------------
pozdrawiam, chfast
Go to the top of the page
+Quote Post
marian8
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 3.12.2003
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


Ma to byc mapa na ktora beda dynamicznie nanoszone punkty w zaleznosci czego szuka uzytkownik. Poniwewaz mapa zajmuje 100KB a takich obiektow na mapie bedzie ponad 100 wiec troche mi to sie za bardzo rozrasta. Poza tym ciezko pozniej dokonac jakies zmiany na mapie.
Jesli jest jakis sposob stworzenia takiego tymczasowego pliku to Twoj sposob bylby dobry, ale powstaje pytanie kiedy i co mialoby kasowac ten tymczasowy plik.
Dzieki za propozycje
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Pamiętajm, że przy pomocy php możesz zapisać obrazek na dysk - a wiec zapisujeszz do pliku obrazek.png i ten obrazek czytasz. Jak chcesz zmienić obrazek.png na nowy, to wywołujesz skrypt.php - czy o to chodziło, bo wydaje mi sie, że nie zrozumiałem problemu..


--------------------

Go to the top of the page
+Quote Post
marian8
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 3.12.2003
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


no tak, ale co sie stanie gdy kilka osob bedzie chcialo zobaczyc mape w tym samym czasie, z innymi punktami wyszczegolnionymi?
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Wywołujesz plik generujacy obrazki z pewnymi parametrami dla danego usera, po czym zapisujesz plik według danego wzoru - np. mapa-42-coś_unikalnego-coś_jeszcze.png - coś w tym stylu; te parametry, które przekazujesz do generowania obrazka umieszczasz w nazwie pliku,żeby łatwo było go znaleźć - to już zadanie dla Ciebie smile.gif
Potem okresowo (np. co 2 godziny czyścisz katalog ze starych plików).
Go to the top of the page
+Quote Post
scanner
post
Post #7





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Nazwę obrazka można nadać taka jak ID sesji.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
marian8
post
Post #8





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 3.12.2003
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


spenalzo - tak wlasnie chyba zrobie i zastosuje pomysl scannera z ID sesji
dzieki za podpowiedzi
Go to the top of the page
+Quote Post
marian8
post
Post #9





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 3.12.2003
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


OK, zrobilem to tak:

[php:1:80f7dc009b]<?php
function usun_stare($dir) { //usuwa stare obrazki
$tab = scandir($dir); //scandir zwraca pliki z podanej sciezki
if ($tab) {
$i = count($tab)-1;
while ($i>=2) { // bo $tab[0]="." $tab[1]=".."
if (time()-fileatime($dir.'/'.$tab[$i]) > 180) { //Jesli plik jest starszy niz 3 minuty
unlink ($dir.'/'.$tab[$i]);
}
$i--;
}
}
}

function zrob_mape($x,$y) {
$im = imagecreatefrompng ('pic/mapa.png');
$insert = imagecreatefrompng("pic/strzalka.png");
$background_color = imagecolorallocate ($im, 255, 255, 255);
imagecolortransparent($insert,imagecolorexact($insert,255,0,255));

$insert_x = imagesx($insert);
$insert_y = imagesy($insert);

imagecopymerge($im,$insert,$x,$y,0,0,$insert_x,$insert_y,50);
$plik = 'tmp/'.time().session_id().'.png';
imagepng ($im,$plik);
ImageDestroy($im);
ImageDestroy($insert);
session_destroy();
return $plik;
}

function wypisz_polozenie() {
$this->usun_stare('tmp');
$plik = $this->zrob_mape(100,100);
echo '<table id="tabela" style="background: url(''.$plik.'');.........
?>[/php:1:80f7dc009b]

Na poczatku wszystkiego dalem session_start() i teraz mam pytanie - czy musze pozniej robic session_destroy(). Nigdy wczesniej nie bawilem sie sesjami wiec nie wiem...

Dzieki wszystkim za pomoc
Jesli cos w tym kodzie jest nie tak to dajcie znac
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:02