Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX] Rysowanie jak w paincie, Primo: Czy da się to zrobic? :D
fenix.robi
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


Witam,

Chciałbym napisać cos w stylu internetowego painta opartego na ajax'ie i php, cos w ten deseń:

http://www.pixlr.com/editor/?loc=pl

tylko nie we flash'u.

1. Czy to jest możliwe.

2. Czy jest już może jakaś biblioteka ajax'a ktora oferuje obrobke grafiki etc.

3. Jeśli macie jakieś materiały, tutoriale bardziej szczegułowe pod tem temat bardzo bym był wdzieczny

PS. http://pl.lmgtfy.com/?q=ajax-image-draw & http://pl.lmgtfy.com/?q=ajax-image-editor szukałem



Na poczatek chciałem zrobić zwykłe rysowanie po utworzunym obrazku 

- tworze obrazek funkcją createimage() w php i go wyswietlam w przegladarce gdzie lewy gorny róg jest zawsze w tej samej odległości od punktu 0px; 0px przegladarki

- na obrazku sprawdzam zdarzenie onClick i jesli jest ono w obszarze obrazka to rysuje kropke funkcja imagesetpixel() we wpółrzednych myszki, i sprawdza czy wspolrzedne są rózne od poprzednich, jesli tak to rysuje nastepny pixel, oczywiśćie dziala dopóki klawisz myszy jest nacisniety.

na poczatek chciałeby cos takiego jak w tej grze: http://www.gry.jeja.pl/652,zbiorowe-rysowanie.html 

Jesli popełniłem jakiś błąd w algorytmie i jesli da się go wykonać to bedę wdzieczy za pomoc/propozycjie/rady

edit: ahh mysłem ze pisze w dziale [xml/ajax] jesli to nie sprawi problemu to prosze o przeniesienie do tego dzialu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował fenix.robi 25.03.2009, 20:25:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
- na obrazku sprawdzam zdarzenie onClick i jesli jest ono w obszarze obrazka to rysuje kropke funkcja imagesetpixel() we wpółrzednych myszki, i sprawdza czy wspolrzedne są rózne od poprzednich, jesli tak to rysuje nastepny pixel, oczywiśćie dziala dopóki klawisz myszy jest nacisniety.

Raczej onmousedown/up. Z przekazaniem punktów do PHP nie byłoby problemu, gorzej chyba z wyświetlaniem po stronie klienta. I tu zostaje w zasadzie tylko <canvas />, ale to wyklucza IE z użytku. Niestety, więcej nie pozostaje nic prócz Flasha/apletu w Javie.

Cytat
edit: ahh mysłem ze pisze w dziale [xml/ajax] jesli to nie sprawi problemu to prosze o przeniesienie do tego dzialu

Twój problem, to raczej DHTML, nie AJAX. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
fenix.robi
post
Post #3





Grupa: Zarejestrowani
Postów: 97
Pomógł: 7
Dołączył: 24.06.2008

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


Dopiero zająłem sie tym skryptem, lecz natrafiłem na pewne trudnosci, funkcja onmousedown nie wywołuje mi funkcji rysuj, gdy dam jak w przykładach onmousedown="alert('cos tam ');" to wyswielta komunikat, a jesli chcem dac onmoisedown="rysuj();" to nic nie pokazuje, nie wiem czy mam cos przekazywac w funkcji i jakie "krzaki" dalej napisałem, a oto kod:

index.php

  1. if (!file_exists("./grafika/obrazek.jpg"))
  2.  include("./inc/nowy.inc.php");
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  7. <head>
  8.  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  9.  <link rel="stylesheet" type="text/css" href="main.css" />
  10.  <title>::Rysowanie::</title>
  11.  <script type="text/javascript">
  12.  // <!-- <![CDATA[
  13.  function rysuj_start()
  14.  {
  15.      var mysz_x = event.clientX -50; //poniewaz rysunek zaczyna się od wspoóarzednych 50,50
  16.      var mysz_y = event.clientY -50; //narazie na sztywno
  17.      window.location= './inc/rysuj.inc.php?x='mysz_x'&y='mysz_y;     
  18.  }
  19.  function rysuj_stop()
  20.  {
  21.      window.opener.location.reload();
  22.      alert("Powinno cos powstac");
  23.  
  24.  }
  25.  function rysuj(handler, event)
  26.  {
  27.      document.addEventListener('mousemove', rysuj_start(), true);
  28.      document.addEventListener('mouseup', rysuj_stop(), true);
  29.  }
  30.  // --> ]]>
  31.  </script>
  32. </head>
  33. <body id="body">
  34.  <div id="srodek">
  35.          <img src="./grafika/obrazek.jpg" onmousedown="rysuj();"/>
  36.  <div>
  37. </body>
  38. </html>
rysuj.inc.php

  1.  $x = $_GET['x'];
  2.  $y = $_GET['y'];
  3.  $sciezka = "../grafika/obrazek.jpg";
  4.  $img   = imagecreatefromjpeg($sciezka)
  5.  or die("Nie można otworzyc obrazka");  
  6.  $pixel  = ImageColorAllocate($img, 0,0,0);
  7.  imagesetpixel($img,$x,$y,$pixel);
  8.  imagesetpixel($img,$x-1,$y,$pixel);
  9.  imagesetpixel($img,$x+1,$y,$pixel);
  10.  imagesetpixel($img,$x,$y-1,$pixel);
  11.  imagesetpixel($img,$x,$y+1,$pixel);
  12.  ImageJPEG($img,$sciezka, 100);
  13.  imagedestroy($img);
  14. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:45