4.7. A szerveroldali képgenerálás

iDevice ikon

Szükségünk lesz egy createjpg.php fájlra. (Az alábbi technika csak olyan szervereken futtatható, ahol a gd library telepítve van)
Az egyszerűség kedvéért a PHP egy - a szerveren létező - white.jpg nevű 100*100 pixeles fehér képet alapul véve fogja a kapott adatok alapján a rajzunkat újragenerálni.

<?php
// új image fájlt készítünk a létező white.jpg fájlból
$im = @imagecreatefromjpeg("white.jpg");
// a flashtől kapott adathalmazt egy for ciklussal bontjuk fel (*71)
for ($j=1 ; $_POST["px".$j] ; $j++) {
$crnt = $_POST["px".$j];
// az egyes pixelekhez tartozó adatokat tömbbe rendezzük (*72)
list($xx, $yy, $rr, $gg, $bb, $end) = split('[_]', $crnt, 6);
// a tömb elemeinek megfelelően az új image fájlunkon elhelyezzük a szines kis pixeleinket (*73)
$pixcol = imageColorAllocate($im, $rr, $gg, $bb);
imagesetpixel($im,$xx,$yy,$pixcol);
}
// meghatározzuk e mentendő jpg fájl nevét
$fajlname="created.jpg";
// mentjük az ideiglenes képet, és egyúttal a flashnek is 'beszámolunk' a végeredményről
if (imagejpeg($im, $fajlname, 75)){
echo "&resultback=ok&";
}else{
echo "&resultback=error&";
}
?>

*71 - az egyes adatsorok px[sorszám]=xpozició_ypozíció_red_green_blue_ formában állnak rendelkezésünkre, mint az fentebb már láttuk. Amíg ilyen px[sorszám] változó létezik, addig futtatjuk a for ciklust
*72 - a tömböt a kapott string '_' -okkal való szétvágásával kaphatjuk meg
*73 - az imageColorAllocate() -tal az aktuális $im képünk számára állíthatunk be egy színértéket (az imént létrehozott tömb $rr, $gg, $bb elemei alapján), majd ezt a imagesetpixel() -lel a megfelelő helyre ($xx, $yy) felülírjuk a $im ideiglenes képen

Miután a szükséges fájlokat (create_image.html, create_image.swf, createjpg.php, white.jpg) feltöltöttük egy megfelelő szerverre, tesztelés során próbáljuk ki az alkalmazásunk működőképességét.