Tartalomjegyzék
PHP Grafikonok
Fontok a grafikonra rajzoláshoz
- DejaVuval
- Linux Libertine
- Liberation
Saját grafikon
- index.php
<?php header("Content-type:text/html; charset=utf-8"); $adat = array(25, 75, 50, 10, 50, 45, 15, 27, 48, 88, 50, 58); $img = genGrafikon($adat); //kép elkészítése imagejpeg($img, "sajat.jpg"); imagedestroy($img); echo "A kép elkészítésével végeztünk<br />"; echo <<<EOT <img src="sajat.jpg" alt="Saját rajzolt kép" /> EOT; function genGrafikon($adat) { $meret = count($adat); $width = 400; if($meret > 10) { $n = $meret - 10; $width = $width + (40 * $n); } $img = imagecreatetruecolor($width, 400); $feher = imagecolorallocate($img, 255, 255, 255); $kek = imagecolorallocate($img, 0, 0, 255); imagefill($img, 1, 1, $feher); //Szöveg kiírása $szoveg = "Tégla"; $szoveg = iconv("UTF-8", "ISO-8859-2", $szoveg); imagestring($img, 5, 100, 0, $szoveg, $kek); $kepMagassag = 400; $max = 100; $x1 = 10; $x2 = $x1 + 20; for($i = 0; $i<$meret; $i++) { $y1 = $kepMagassag - ($adat[$i] * ($kepMagassag / $max)); //Téglalap elkészítése imagerectangle($img, $x1, $y1, $x2, 400, $kek); imagefill($img, $x1 + 1, 399, $kek); $x1 = $x1 + 40; $x2 = $x2 + 40; } return $img; } ?>
JpGraph
Hiba megkerülése
Ha nincs engedélyezve a telepített PHP rendszeredben a imageantialias() függvényt a következő hibaüzenetet kapjuk.
Keressük meg a JpGraphError::RaiseL(25128); kezdetű sort a gd_image.inc.php fájlban majd tegyük megjegyzésbe:
function SetAntiAliasing($aFlg=true) { $this->use_anti_aliasing = $aFlg; if( function_exists('imageantialias') ) { imageantialias($this->img,$aFlg); } else { //JpGraphError::RaiseL(25128);//('The function imageantialias() is not available in your PHP installation. Use the GD version that comes with PHP and not the standalone version.') } }
Hiba javítása
Ez a megoldás PHP5 újrafordításával valósul meg, ezért hosszú ideig tarthat. Telepíteni viszont csak a php5-gd csomagot telepítjük újra. A leírás Debian Squeeze rendszeren készült.
Ellenőrizzük az imageantialias() függvény meglétét:
php -r "var_dump(function_exists('imageantialias'));"
Az eredmény ez lehet:
bool(false)
Láthatjuk, hogy nincs engedélyezve.
Szükséges eszközök telepítése:
apt-get install build-essential debhelper fakeroot
apt-get remove php5-gd
cd /usr/src/
apt-get source php5
apt-get build-dep php5 cd php5-5.3.3/
Szerkesszük a „debian/rules” fájlt és cseréljük le a következő sort:
--with-gd=shared,/usr --enable-gd-native-ttf
erre:
--with-gd=shared --enable-gd-native-ttf
Elkészítjük az új csomagot:
dpkg-buildpackage -rfakeroot -uc -b
A következő hibát kapjuk:
# start our own mysql server for the tests /bin/sh debian/setup-mysql.sh 1025 /usr/src/php5-5.3.3/mysql_db Timed out waiting for mysql server to be available kill: 65: No such process kill: 65: No such process make: *** [test-result.txt] Error 1 dpkg-buildpackage: error: debian/rules build gave error exit status 2
Javítjuk a debian/setup-mysql.sh fájlban:
# Start the daemon $mysqld > $datadir/run.log 2>&1 &
helyett:
$mysqld --user=root > $datadir/run.log 2>&1 &
Removing patch fix-segfault-in-pgsql_stmt_execute-when-postgres-is-down.patch Restoring ext/pdo_pgsql/pgsql_statement.c Patch fix-memory-leak-inside-highlight_string.patch does not remove cleanly (ref resh it or enforce width -f) make: *** [unpatch] Error 1 dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
Megoldásként futtasuk a következő parancsot a PHP5-5.3.3 könyvtárban:
QUILT_PATCHES=debian/patches quilt refresh
Telepítjük az új csomagot:
cd .. dpkg -i php5-gd_5.3.3-7+squeeze14_i386.deb