За да проверите версията на вашата 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).
Няма коментари:
Публикуване на коментар