Problem mit Kochkurven-Code

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • DANKE für die Antwort. Hier der Code im SyntaxHighlighting und die Fehlermeldung.

    Quellcode

    1. <?php
    2. $width=7000;
    3. $height=2000;
    4. $file='hochkurve'.uniqid().'.png';
    5. header ("Content-type: image/png");
    6. $im = imagecreatetruecolor($width, $height) or die("Cannot Initialize new GD image stream");
    7. $colors=Array();
    8. $colors['bg'] = imagecolorallocate($im, 255, 255, 255);
    9. $colors['graph'] = imagecolorallocate($im, 150, 0, 0);
    10. $colors['graph2'] = imagecolorallocate($im, 0, 0, 150);
    11. $cursorX=0;
    12. $cursorY=$height-10;
    13. $cursorR=0.5;
    14. imagefill ( $im, 0, 0, $colors['bg'] );
    15. function drawCursor ($deg, $l) {
    16. $deg=$deg/180;
    17. $deg1=$GLOBALS['cursorR'];
    18. $deg2=$deg1+$deg;
    19. $X1=$GLOBALS['cursorX'];
    20. $Y1=$GLOBALS['cursorY'];
    21. $X2=sin($deg2*M_PI)*$l+$X1;
    22. $Y2=cos($deg2*M_PI)*$l+$Y1;
    23. $GLOBALS['cursorX']=$X2;
    24. $GLOBALS['cursorY']=$Y2;
    25. $GLOBALS['cursorR']=$deg2;
    26. imageline($GLOBALS['im'],$X1,$Y1,$X2,$Y2,$GLOBALS['colors']['graph2']);
    27. }
    28. function Hk($deg) {
    29. drawCursor ($deg, 0);
    30. drawCursor (0, 1);
    31. drawCursor (60, 1);
    32. drawCursor (-120, 1);
    33. drawCursor (60, 1);
    34. }
    35. function HK2($deg,$cnt) {
    36. drawCursor ($deg, 0);
    37. if ($cnt>0) {
    38. HK2(0,$cnt-1);
    39. HK2(60,$cnt-1);
    40. HK2(-120,$cnt-1);
    41. HK2(60,$cnt-1);
    42. } else {
    43. Hk (0);
    44. Hk (60);
    45. Hk (-120);
    46. Hk (60);
    47. }
    48. }
    49. HK2(0,6);
    50. imagepng($im,$file);
    51. imagedestroy($im);
    52. echo '<a href="'.$file.'">save</a><br>';
    53. echo '<img src="'.$file.'">';
    54. ?>
    Alles anzeigen


    Fehlermeldung:

    Warning: uniqid() expects at least 1 parameter, 0 given in /home/david/public_html/Kochkurve.php on line 6

    Warning: imagepng(): Unable to open 'hochkurve.png' for writing in /home/david/public_html/Kochkurve.php on line 61

    Ach ja, ich weiss ja nicht ob dies relevant ist oder nicht aber der Server ist ein Linuxserver.
  • Ein bisschen Englisch kann doch jeder?
    Warning: uniqid() expects at least 1 parameter, 0 given in /home/david/public_html/Kochkurve.php on line 6

    Diese Fehlermeldung sagt dir, dass du mindestens mindestens einen Parameter mitgeben sollst, dieser ab nicht vorhanden ist, da du ihn nicht mitgibst. Die Funktion Uniqid() erwartet 2 Parameter, wobei der 2. optional ist.
    php.net/manual/de/function.uniqid.php



    Warning: imagepng(): Unable to open 'hochkurve.png' for writing in /home/david/public_html/Kochkurve.php on line 61

    Deine 2. Fehlermeldung kommt eben davon, dass er nicht weiß wie das Bild nun genau heißt, weil dein Bildname ja mit der uniqid benannt wird. Folgefehler von Fehler 1.
    Achja, wieso benennst du die Bilder nach eine uniqid und machst das ganze nicht mit einem Zähler? Da wirst du später, wenn ein Batzen Bilder im Ordner liegt und ein Bild suchst, dich besser zurechtfinden...
    Bild1.png
    Bild2.png
    Bild3.png
    usw.
  • hab die beiden fehler behoben. jetzt wird aber nur ein sinnloses zeichenwirrwarr ausgeben. hab keine ahnung was jetzt noch falsch sein könnte... weiss jemand rat???

    Quellcode

    1. $width=800;
    2. $height=800;
    3. $file='hochkurve'.uniqid(rand(3,645)).'.png';
    4. header ("Content-type: image/png");
    5. $im = imagecreatetruecolor($width, $height) or die("Cannot Initialize new GD image stream");
    6. $colors=Array();
    7. $colors['bg'] = imagecolorallocate($im, 255, 255, 255);
    8. $colors['graph'] = imagecolorallocate($im, 150, 0, 0);
    9. $colors['graph2'] = imagecolorallocate($im, 0, 0, 150);
    10. $cursorX=0;
    11. $cursorY=$height-10;
    12. $cursorR=0.5;
    13. imagefill ( $im, 0, 0, $colors['bg'] );
    14. function drawCursor ($deg, $l) {
    15. $deg=$deg/180;
    16. $deg1=$GLOBALS['cursorR'];
    17. $deg2=$deg1+$deg;
    18. $X1=$GLOBALS['cursorX'];
    19. $Y1=$GLOBALS['cursorY'];
    20. $X2=sin($deg2*M_PI)*$l+$X1;
    21. $Y2=cos($deg2*M_PI)*$l+$Y1;
    22. $GLOBALS['cursorX']=$X2;
    23. $GLOBALS['cursorY']=$Y2;
    24. $GLOBALS['cursorR']=$deg2;
    25. imageline($GLOBALS['im'],$X1,$Y1,$X2,$Y2,$GLOBALS['colors']['graph2']);
    26. }
    27. function Hk($deg) {
    28. drawCursor ($deg, 0);
    29. drawCursor (0, 1);
    30. drawCursor (60, 1);
    31. drawCursor (-120, 1);
    32. drawCursor (60, 1);
    33. }
    34. function HK2($deg,$cnt) {
    35. drawCursor ($deg, 0);
    36. if ($cnt>0) {
    37. HK2(0,$cnt-1);
    38. HK2(60,$cnt-1);
    39. HK2(-120,$cnt-1);
    40. HK2(60,$cnt-1);
    41. } else {
    42. Hk (0);
    43. Hk (60);
    44. Hk (-120);
    45. Hk (60);
    46. }
    47. }
    48. HK2(0,6);
    49. imagepng($im);
    50. imagedestroy($im);
    51. echo '<a href="'.$file.'">save</a><br>';
    52. echo '<img src="'.$file.'">';
    53. ?>
    Alles anzeigen
  • nun funktioniert es.hab das ganze ein wenig einfacher gelöst obwohl es andersrum doch viel intressanter gewesen wäre. :)

    Quellcode

    1. <?php
    2. header ("Content-type: image/png");
    3. $im = @imagecreatetruecolor(800, 400)
    4. or die("Cannot Initialize new GD image stream");
    5. $color = imagecolorallocate($im, 139, 139, 34);
    6. function vsum($a,$b) {
    7. $s = array (0,0);
    8. $s[0] = $a[0] + $b[0];
    9. $s[1] = $a[1] + $b[1];
    10. return $s;
    11. }
    12. function vmul($r, $v) {
    13. $m[0] = $r*$v[0];
    14. $m[1] = $r*$v[1];
    15. return $m;
    16. }
    17. function vsub($a,$b) {
    18. return vsum($a, vmul(-1,$b));
    19. }
    20. function perp($v) {
    21. $p[0] = $v[1];
    22. $p[1] = -$v[0];
    23. return $p;
    24. }
    25. function koch($im, $a, $b, $gen) {
    26. $color = imagecolorallocate($im, 100, 40, 0);
    27. $c = vsum($a,vmul(1/3, vsub($b,$a)));
    28. $e = vsum($a,vmul(2/3, vsub($b,$a)));
    29. $d = vsum($a,vmul((1/2), vsub($b,$a)));
    30. $d = vsum($d,perp(vmul((sqrt(3)/2),vsub($e, $c))));
    31. if ($gen==0) {
    32. imageline($im, $a[0],$a[1],$c[0],$c[1],$color);
    33. imageline($im, $c[0],$c[1],$d[0],$d[1],$color);
    34. imageline($im, $d[0],$d[1],$e[0],$e[1],$color);
    35. imageline($im, $e[0],$e[1],$b[0],$b[1],$color);
    36. } else {
    37. koch ($im, $a, $c, $gen-1);
    38. koch ($im, $c, $d, $gen-1);
    39. koch ($im, $d, $e, $gen-1);
    40. koch ($im, $e, $b, $gen-1);
    41. }
    42. }
    43. $x = array(10,350);
    44. $y = array(790,350);
    45. koch($im,$x,$y,4);
    46. imagepng($im);
    47. ?>
    Alles anzeigen