Notice: Undefined offset: 1 in /home/www/netzwerkstatt.de/html/index.php on line 38

Notice: Undefined offset: 1 in /home/www/netzwerkstatt.de/html/index.php on line 39

Notice: Undefined variable: Sprache in /home/www/netzwerkstatt.de/html/index.php on line 160

Notice: Undefined index: Suchkette in /home/www/netzwerkstatt.de/html/index.php on line 171

Notice: Undefined variable: Suchenteil1 in /home/www/netzwerkstatt.de/html/index.php on line 177

Warning: Missing argument 2 for Echon(), called in /home/www/netzwerkstatt.de/html/index.php on line 197 and defined in /home/www/netzwerkstatt.de/html/index.php on line 28

Notice: Undefined variable: was in /home/www/netzwerkstatt.de/html/index.php on line 29

Notice: Undefined variable: was in /home/www/netzwerkstatt.de/html/index.php on line 29

Notice: Undefined variable: endung in /home/www/netzwerkstatt.de/html/index.php on line 55

Notice: Undefined variable: StilHTMLSchule in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 2

Notice: Undefined variable: WwHTMLSchule in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 5

Notice: Undefined variable: StilJavaScript in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 5

Notice: Undefined variable: WwJavaScript in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 7

Notice: Undefined variable: StilCSS in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 7

Notice: Undefined variable: WwCSS in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 9

Notice: Undefined variable: StilBilderrahmen in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 11

Notice: Undefined variable: StilFarbmeister in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 13

Notice: Undefined variable: StilSilbentrennung in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 15

Notice: Undefined variable: StilCMS in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 15

Notice: Undefined variable: WwCMS in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 17

Notice: Undefined variable: StilFachwoerter in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 19

Notice: Undefined variable: WwFachwoerter in /home/www/netzwerkstatt.de/html/index.php(240) : eval()'d code on line 20

Notice: Undefined variable: StilWillkommen in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 24

Notice: Undefined variable: WwWillkommen in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 25

Notice: Undefined variable: StilWerkstatt in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 25

Notice: Undefined variable: StilMeister in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 26

Notice: Undefined variable: WwMeister in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 27

Notice: Undefined variable: StilSozialmathe in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 27

Notice: Undefined variable: WwSozialmathe in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 28

Notice: Undefined variable: StilKontakt in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 28

Notice: Undefined variable: WwKontakt in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 30

Notice: Undefined variable: StilHerausgeber in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 30

Notice: Undefined variable: WwHerausgeber in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 32

Notice: Undefined variable: Suchenteil2 in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 38

Notice: Undefined variable: Suchergebnis in /home/www/netzwerkstatt.de/html/index.php(250) : eval()'d code on line 50
Netzwerkstatt

Netzwerkstatt.de
  – hier wird geschraubt

 

Willkommen

Werkstatt

JavaScript

CSS

Bilderrahmen

Farbmeister

Silbentrennung

Inhalteverwaltung (CMS)

GD2

Fachwörter / Glossar

Meister

Sozialmathe

Herausgeber


 
Fahne Deutschland Fahne Norwegen Fahne UK GB Fahne Frankreich

GD2

– oder, ursprünglich, Gif Draw – ist eine Sammlung (Bibliothek) von Verfahren (Funktionen) für die Verarbeitung von Pixelbildern in PHP.
Beschreibung: http://de3.php.net/manual/de/book.image.php
Zwar sind die Funktionen in C geschrieben, aber man kann sie einigermaßen leicht nach PHP übertragen und alsdann ausbessern und ergänzen. Das ist zuweilen nötig, da sie manchmal mit heißer Nadel gestrickt sind.
Beispiel: Das Verfahren imagefilltoborder macht nicht so recht, was ich von ihm erwartete: nämlich was der Farbeimer in Photoshop ist; deshalb habe ich das Verfahren angepaßt und diese Anpassung imagefilllowlands genannt -- hier ist eine Beispielanwendung, die ich für Kistenschieben / Sokoban benötige:

(Kistenbild)


Hier ist der Quellcode des Farbeimer-Verfahrens imageFillLowlands():

function imagefilllowlands ($Bild, $x, $y, $newColor)    {
  global $Wortlautausgabe;
  $findColor = imagecolorat($Bild, $x, $y);
  if ($dii > 10)
    return;
  global $Wortartausgabe;
  if ($findColor < 0)    {    /* Refuse to fill to a non-solid $findColor */
    return;  }
  /* nach links /  left */
  $leftLimit = (-1);
  for ($i=$x; $i>=0; $i--)    {
    if ($Wortlautausgabe) 
      echo \"\n
(2) >>> i: $i; x: $x; y: $y; iii++: \" . $iii++ . \"<<<\"; flush(); $px = imagecolorat($Bild, $i, $y); if (($px != $findColor) && ($px != $newColor) ) { // newColor vermutlich unnötig break; } ImageSetPixel ($Bild, $i, $y, $newColor); // nur hier wird gemalt ... $leftLimit = $i; } /* Seek right */ $rightLimit = $x; $sx = imagesx($Bild); $sy = imagesy($Bild); if ($Wortlautausgabe) {echo \"\n
(3) >>> sx: $sx; sy: $sy\"; flush(); } for ($i=$x+1; $i<$sx; $i++) { if ($Wortlautausgabe) { echo \"\n
(4) >>> i: $i; _ x:i $x; y: $y; _ ..... sx: $sx, sy: $sy ... iii++: \" . $iii++ . \"<<< \"; flush(); } $px = imagecolorat($Bild, $i, $y); if (($px != $findColor) && ($px != $newColor) ) { break; } ImageSetPixel ($Bild, $i, $y, $newColor); // ... und hier. $rightLimit = $i; } /* nach oben / above */ if ($y > 0) { $lastBorder = 1; for ($i=$leftLimit; $i<=$rightLimit; $i++) { $px = imagecolorat($Bild, $i, $y-1); if ($lastBorder) { // if (($px == $findColor) || ($px == $newColor)) { // nicht nötig, das Verfahren kreuzt nicht die eigenen Pfade if (($px == $findColor)) { ImageFillLowlands ($Bild, $i, $y-1, $newColor); $lastBorder = 0; } } else if ( ($px != $findColor) && ($px != $newColor) ) { $lastBorder = 1; } } } /* nach unten / below */ if ($y < ((imagesy($Bild)) - 1)) { $lastBorder = 1; for ($i=$leftLimit; $i<=$rightLimit; $i++) { $px = imagecolorat($Bild, $i, $y+1); if ($lastBorder) { if (($px == $findColor)) { ImageFillLowlands ($Bild, $i, $y+1, $newColor); $lastBorder = 0; } } else if ( ($px != $findColor) && ($px != $newColor) ) { $lastBorder = 1; } } } // return($Bild); } // E N D E des Verfahrens imageFillLowlands()