За да проверите версията на вашата GD библиотека, може да ползвате следния скрипт:
<?php
$infoGD = gd_info ();
foreach ($infoGD as $key => $value) {
echo "$key => $value" . "<br>";
}
?>
Какво можем да правим с тази библиотека? Можем да отваряме, съхраняваме и чертаем изображения върху работно платно (canvas) в различни файлови формати - GIF, PNG, JPEG, WBMP и XPM. С exif extension можем да работим с информацията, съдържаща се в хедърите на JPEG и TIFF изображения. Можем да намалим и увеличим размера на изображение. Можем да добавяме воден знак върху снимка и т.н.
Ще разгледам следния случай:
Моделът Audi RS6 Avant тръгва от точка А и за 3,9 s достига скорост 100 km/h (≈28 m/s). Да се определят:
Ще разгледам следния случай:
Моделът Audi RS6 Avant тръгва от точка А и за 3,9 s достига скорост 100 km/h (≈28 m/s). Да се определят:
- Вида на движението.
Движението на автомобила е равноускорително без начална скорост (тръгва от място).
- Ускорението, с което се е движил автомобилът.
За да определим ускорението, ще приложим закона за скоростта при равноускорително движение без начална скорост:
v = vo + a*t
28 = 0 + a*3,9
a = 28 : 3,9
a = 7,18 m/s2
- Да се начертае графика на изменението на скоростта на автомобила с времето.
Графиката на промяната на скоростта с времето, начертана с LibreOffice, ще изглежда така:
Моето желание обаче е да изчертая подобна графика с PHP, колкото и безмислено да звучи това за някои особи. :)
За да изчертая графична зависимост между две величини, ми е необходима координатна система. Тъй като ще създавам двумерни изображения, ще работя с декартова (правоъгълна, двумерна) координатна система.
Кои функции от GD библиотеката ще са ми необходими? Ще трябва да създам изображение, да му задам цвят, да начертая хоризонтални и вертикални линии, да изпиша величините по координатните оси. Функциите, които извършват тези дейности са:
За да изчертая графична зависимост между две величини, ми е необходима координатна система. Тъй като ще създавам двумерни изображения, ще работя с декартова (правоъгълна, двумерна) координатна система.
Кои функции от GD библиотеката ще са ми необходими? Ще трябва да създам изображение, да му задам цвят, да начертая хоризонтални и вертикални линии, да изпиша величините по координатните оси. Функциите, които извършват тези дейности са:
|
На файла, който съдържа скрипта за изчертаване на графиката, съм дала наименование graphic.php. Ето и неговото съдържание:
<?php
//grapfic.php
$width=1000;
$height=600;
$im = imagecreatetruecolor($width,$height);
$gray = imagecolorallocate($im,102,102,102);
$white = imagecolorallocate($im,255,255,255);
$black = imagecolorallocate($im,0,0,0);
$red = imagecolorallocate($im,255,0,0);
imagefill($im,0,0,$white);
$x_ori = 80;
$y_ori = 60;
$y_bottom = 60;
$xlen = $width - $x_ori - $x_ori * 1.5;
$ylen = $height - $y_ori - $y_bottom;
$font="../NK_Mono.ttf";
$text="Промяна на скоростта на Audi RS6 Avant";
imagettftext($im, 30, 0, $x_ori+80,$y_ori-20, $red, $font, $text);
imagestring($im,5,$x_ori + $xlen/2 -10,$y_ori + $ylen + 30,"t, s", $red);
imagestringup($im,5,$x_ori-60,$y_ori + $ylen/2 + 20,"v, m/s", $red);
$arry = array(30,25,20,15,10,5);
for ($i=0;$i<5;$i++)
{
$y = $y_ori + ($arry[$i] - $arry[0]) * $ylen/($arry[5]-$arry[0]);
$style=array($white,$white,$gray,$white,$white);
imagesetstyle($im,$style);
imageline($im,$x_ori,$y,$x_ori + $xlen,$y,IMG_COLOR_STYLED);
imagestring($im,2,$x_ori-20,$y-7,number_format($arry[$i]),$black);
}
imagestring($im,2,$x_ori,$y_ori+490,"0",$black);
imagestring($im,2,$x_ori+90,$y_ori+490,"0.5",$black);
imagestring($im,2,$x_ori+190,$y_ori+490,"1.0",$black);
imagestring($im,2,$x_ori+290,$y_ori+490,"1.5",$black);
imagestring($im,2,$x_ori+390,$y_ori+490,"2.0",$black);
imagestring($im,2,$x_ori+490,$y_ori+490,"2.5",$black);
imagestring($im,2,$x_ori+590,$y_ori+490,"3.0",$black);
imagestring($im,2,$x_ori+690,$y_ori+490,"3.5",$black);
imagestring($im,2,$x_ori+790,$y_ori+490,"4.0",$black);
imageline($im,$x_ori+100,$y_ori-1,$x_ori+100,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+200,$y_ori-1,$x_ori+200,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+300,$y_ori-1,$x_ori+300,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+400,$y_ori-1,$x_ori+400,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+500,$y_ori-1,$x_ori+500,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+600,$y_ori-1,$x_ori+600,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+700,$y_ori-1,$x_ori+700,$y_ori + $ylen,IMG_COLOR_STYLED);
imageline($im,$x_ori+800,$y_ori-1,$x_ori+800,$y_ori + $ylen,IMG_COLOR_STYLED);
imagearc($im,$x_ori,$y_ori+480,5,5,0,360,$red);
imagearc($im,$x_ori+790,$y_ori+20,5,5,0,360,$red);
imageline($im,$x_ori,$y_ori+480,$x_ori+790,$y_ori+20,$red);
imageline($im,$x_ori,$y_ori+$ylen,$x_ori+$xlen,$y_ori+$ylen,$black);
imageline($im,$x_ori,$y_ori,$x_ori,$y_ori + $ylen,$black);
imageline($im,$x_ori,$y_ori,$x_ori+$xlen,$y_ori,$black);
imageline($im,$x_ori+$xlen,$y_ori,$x_ori+$xlen,$y_ori+$ylen,$black);
header('Content-type: image/jpeg');
$img=imagecreatefromjpeg("audi.jpg");
imagecopy($im, $img, $x_ori+300,$y_ori+60,0,0,148,108);
imagejpeg($im);
imagedestroy($im);
imagedestroy($img);
?>
След изпълнение на скрипта, в браузъра ще видите:
Забележка: За да проработи скриптът, е необходимо да промените редове 19, 71 и 72 и да укажете пътя до файла с изображението, шрифта, който ще ползвате за изписване на текста и съответно размерите на изображението (от ред 19).
Няма коментари:
Публикуване на коментар