Помогни ни да направим Uroci.net по - богат! Добави урок

PHP - част 13 (Създаване на изображения)

PHP » PHP
fix3d   трудност:    видян: 12299



Функцията ImageLoadFont()

Тази функция се използва за зареждане на нов шрифт. Функцията има един параметър, който е името на файла, в който се съхранява шрифтът. Синтаксисът на функцията е следният:

$intvar = ImageLoadFont ( string име на файл );

Ако искате да заредите дефиниран от вас битмап шрифт, може да използвате функцията ImageLoadFont(). Функцията връща уникален идентификатор, който може да се използва от програмата като номер на шрифт. Този идентификатор, трябва да е по-голям от 5, тъй като номерата от 1 до 5 са резервирани за стандартните шрифтове.


Функцията ImageFontHeight()

Можете да използвате тази функция, за да узнаете височината на шрифта. След това можете да я използвате в програмата си. Височината се измерва в пиксели. Синтаксисът на функцията е следния:

$intvar = ImageFontHeight( int шрифт );


Функцията ImageFontWidth()

Можете да използвате тази функция за да узнаете ширината на шрифта. След това можете да я използвате в програмата си. Ширината се измерва в пиксели. Синтаксисът на функцията е следния.

$intvar = ImageFontWidth ( int шрифт ) ;





Нека да видим един пример за използването на функциите ImageFontHeight() и ImageFontWidth() в програма, която извлича стойностите им и ги показва на екрана.

<html>
<body>
<?php
$img = ImageCerate ( 300, 300 );
$bgcolor = ImageColorAllocate ( $img, 200, 200, 020 );
$red = ImageColorAllocate ( $img, 255, 0, 0);
$green = ImageColorAllocate ( $img, 0, 255, 0);
$blue= ImageColorAllocate ( $img, 0, 0, 255);
$grey= ImageColorAllocate ( $img, 50, 50, 50);
$black = ImageColorAllocate ( $img, 0, 0, 0);
for ( $i = 0; $i < 6; $i ++ )
{
ImageChar ( $img, 20, 20 + ($i * 20 ), „ S “ , $red);
$height[] = ImageFontHeight ( $i );
$width[] = ImageFontWidth ( $i );
}
ImageSetPixel ( $img, 50, 50, $pixelcolor );
ImagePNG ( $img, „pic.png“ );
ImageDestroy ( $img );
for ( $i = 0; $i < 6; $i ++ )
{
echo „Шрифт „.$i.“ височина =
„.$height[$i].“<br>“;
}
?>
<img title="óðîöè îò uroci.com" src=“pic.png“ border=“0“>
</body>
</html>


Функцията ImageCharUp()

Можете да използвате тази функция, ако искате да покажете вертикален текст в платното. Функцията е сходна с функцията ImageChar(). Първият параметър е идентификаторът на изображение, вторият е номерът на шрифта. Следващите два параметъра са координатите, на които да се изрисува символът, следвани от символа и накрая от цвета на символа.

$intvar = ImageCharUp ( int изображение, int шрифт, int X, int Y, string символ, int цвят );

До сега ви показах шест функции за работа с текст. Нека да направим една програма за работа и със шестте

<html>
<body>
<?php
$img = ImageCerate ( 300, 300 );
$bgcolor = ImageColorAllocate ( $img, 200, 200, 020 );
$red = ImageColorAllocate ( $img, 255, 0, 0);
$green = ImageColorAllocate ( $img, 0, 255, 0);
$blue= ImageColorAllocate ( $img, 0, 0, 255);
$grey= ImageColorAllocate ( $img, 50, 50, 50);
$black = ImageColorAllocate ( $img, 0, 0, 0);

ImageChar ( $img, 0, 20, 20, „S“, $red );
ImageChar ( $img, 1, 20, 40, „S“, $green );
ImageChar ( $img, 2, 20, 60, „S“, $rblue );
ImageChar ( $img, 3, 20, 80, „S“, $grey);
ImageChar ( $img, 4, 20, 100, „S“, $black );
ImageChar ( $img, 5, 20, 120, „S“, $red );

ImageCharUp ( $img, 0, 20, 160, „S“, $red );
ImageCharUp ( $img, 1, 40, 160, „S“, $green );
ImageCharUp ( $img, 2, 60, 160, „S“, $rblue );
ImageCharUp ( $img, 3, 80, 160, „S“, $grey);
ImageCharUp( $img, 4, 100, 160, „S“, $black );
ImageCharUp ( $img, 5, 120, 160, „S“, $red );

ImageSetPixel ( $img, 50, 50, $pixelcolor );
ImagePNG ($img „pic.png“);
ImageDestroy ( $img );
?>
<img title="óðîöè îò uroci.com" src=“pic.png“ border=“0“>
</body>
</html>


Рисуване на сложни обекти

Както можете да създавате прости обекти, така можете да създавате и сложни обекти като окръжности и дъги. Вече споменах по-рано, че дъгата е част от окръжност. За да създадете окръжност или дъга, използвайте функцията ImageArc(). Функцията приема осем параметъра. Първият е идентификаторът на изображението, следващите два са координатите на центъра на окръжността. Следващите два параметъра задават височината и ширината на окръжността. Параметрите начало и край се използват при рисуването на дъга, за да се зададат точките, в които започва и свършва дъгата., те представляват градуси. Точките начало и край се обхождат по посока на часовниковата стрелка. Последният параметър е цветът, с който трябва да се изрисува дъгата. Нека сега да изрисуваме окръжност и да я запазим като PNG файл.

<?php
$imgcord = ImageCreate ( 250, 500 );
$red = ImageColorAllocate ( $imgcord, 255, 0, 0 );
$green = ImageColorAllocate ( $imgcord, 0, 255, 0 );
$blue = ImageColorAllocate ( $imgcord, 0, 0, 255 );
ImageLine ( $imgcord, 5, 5, 125, 50, $red );
ImageArc ( $imgcord, 100, 25, 120, 125, 0, 180, $green );
ImagePNG ( $imagecord );
ImageDestroy ( $imgcord );
?>


В горния код първо се създава платно с размери 250х500 пиксела. След това се създават трите цвята – червен, зелен и син – и се присвояват на три променливи. След това се изрисува линия, започваща от координати 5, 5 до координати 125,150. Накрая се рисува полуокръжност, свързваща двата края на линията. Центърът на дъгата е с координати 100, 25. Ширината и височината на дъгата са съответно 120 и 125.

Можете да създавате сложни обекти само ако използвате GD версия 2.0 или по-голяма.


Страници: «1 2 3 4 5 »

Коментари (3)

nasko84 на 05.05 2007 в 17:28ч.
Не знам точно какво трябва да поправя, но въобще не ги възприема като кирилица.
Явно mysql_query("SET NAMES cp1251",$db); тук не действа :(

Ето какво правя аз:
//изчертавам правоъгълник с окръжности в края
imagefilledpolygon($image,$massiv,4,$farbe);
drawPoint($image,$pix,$x1,$y1,$farbe);

//функцията drawPoint не съм я писал аз
function drawPoint($img, $radius, $origo_x, $origo_y, $pointColor)
{
for ($i=0;$i в променливата $ulica е името на дадена улица взето от базата данни

Хайде, ако има някой, който може да ми каже как да изписвам на кирилица текст чрез тази библиотека да ми каже.
Използвал съм imagettftext тъй като ми трябва да го изпиша под ъгъл, отделен въпрос е, че не мога да си настроя и това под какъв ъгъл и спрямо коя точка да изписвам.

Пишете ми pls, спешно ми е ...
nasko84 на 05.05 2007 в 19:40ч.
хе-хе
реших си проблема
$ulica=iconv('cp1251','UTF-8',$ulica);
и готово
:)
nasko84 на 08.05 2007 в 22:17ч.
Здравейте, пак!
Имам следният въпрос: Искам да изчертая текст, с imagettftext($image,8,0,...
и съответно искам да го изпиша на равни растояния от $x (симетрично), обаче как да разбера колко пиксела ширина е шрифта, щото явно това 8 не е, а за функцията $intvar = ImageFontWidth ( int шрифт ), обаче откъде да знам шрифта кой номер е, аз използвам Verdana.ttf, или Arial.ttf
pls ако някой се сети, да пише :Р

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com