GD номын санг ашиглан график үүсгэх. PHP дээр график зурах Бид юу өөрчилсөн

Вэб хувилбарт график хэрэгслүүдийн хэрэглээг тодорхойлохын тулд график ашиглах боломжтой дараах тохиолдлуудыг авч үзье.

  • Бие даан бүтээсэн эсвэл хаа нэг газраас зээлсэн статик зургуудыг HTML хуудсанд суулгаж болно.
  • Програмаар үүсгэсэн зургуудыг (HTML + CSS) ашиглаж болно.
  • Та gd номын санг ашиглан скриптийг гүйцэтгэх явцад гарч болох бүх нөхцөл байдалд урьдчилан статик график үүсгэх, тэдгээрийг файлд хадгалах, нөхцөлт байдлаар харуулах боломжтой.

Бид графикийг хялбаршуулсан тул статик дүрс ашиглан хэрэгжүүлэх сонголтыг авч үзэхгүй тул эхлээд энгийн сонголтыг (HTML + CSS график), дараа нь PHP дээр gd номын санг ашиглах талаар авч үзэх болно.

График HTML + CSS

Вэбсайтад зочилсон хүмүүс өнгөт талуудтай хэвтээ зураастай графикуудыг мэддэг бөгөөд энэ нь ихэвчлэн судалгааны үр дүнг харуулахад ашиглагддаг. Өнгөц харахад ийм диаграммыг бий болгохын тулд ямар нэгэн төрлийн график хэрэгслийг ашигладаг мэт боловч бодит байдал дээр хэд хэдэн энгийн скрипт ашиглахад хангалттай.

PHP, HTML, CSS дээр графиктай ажиллах /* Дизайныг бүрдүүлдэг CSS загварууд */ body div (өндөр: 1em; дэлгэц: inline-block; vertical-align: дунд ) span (дэлгэц: inline-block; өргөн: 120px ) .улбар шар (арын дэвсгэр: улбар шар) .алим (арын дэвсгэр: #33CC66 ) .гадил (арын дэвсгэр: шар ) .улаан лооль (арын дэвсгэр: улаан ) .өргөст хэмх ( дэвсгэр: ногоон ) .төмс ( дэвсгэр: саарал ) Захиалгын хуудас Жимс Жүрж Алим Гадил хүнсний ногоо Улаан лооль Өргөст хэмх Төмс

Энэ жишээ нь PHP-ийн ямар ч шинэ боломжуудыг харуулахгүй, харин HTML болон CSS ашиглан график үүсгэх энгийн аргыг (энэ тохиолдолд баганан график) харуулж байна.

gd номын сан

Өмнөх хэсэгт тайлбарласан график хэрэгслүүд нь стандарт HTML кодын чадамжийг бараг шавхаж байна (хэдийгээр бид нэлээд хүчирхэг HTML5 Canvas график үүсгэх хэрэгслийг авч үзээгүй гэдгийг тэмдэглэх нь зүйтэй). Одоо gd номын санг ашиглан үнэхээр дурын график үүсгэх аргуудыг тайлбарлах руу шилжье.

gd номын сангийн ерөнхий тодорхойлолт

Ерөнхийдөө gd хэрэгсэл нь дүрс үүсгэх, удирдахад зориулагдсан C кодын сан юм. Энэхүү номын санг Boutel.com сайтын авъяаслаг, өгөөмөр ажилтнууд анхлан хөгжүүлж, олон нийтэд нээлттэй болгосон.

gd номын сан нь өөрөө график эсвэл зургийн програм биш, бие даасан програм эсвэл график хэрэглэгчийн интерфэйс ч биш юм. Харин gd номын сан нь ямар ч программ дуудаж, хүссэн дүрсний засварыг гүйцэтгэх функцээр хангадаг. Энэ нь gd номын сан нь энэ номын сангийн кодыг ашиглах шаардлагатай аль ч С програмтай холбогдож болно гэсэн үг юм. Энэ бол PHP системийг хөгжүүлэгчид яг ийм асуудлыг шийдсэн юм.

Үнэн хэрэгтээ энэ зорилгоор PHP скриптээс gd процедурыг дуудахад хялбар болгох интерфэйсийн багц функцууд бичигдсэн байдаг. Гэхдээ gd номын сан нь өөрөө PHP-д зориулсан ямар ч код агуулаагүй бөгөөд Perl, Pascal, Haskell, REXX зэрэг програмчлалын хэд хэдэн хэл болон програмчлалын орчноос номын санд хандах боломжийг олгох үүднээс интерфэйсүүдийг боловсруулсан.

gd номын сан нь эх зураг үүсгэх функцуудыг дуудах боломжийг олгодог (эхэндээ хоосон, хоосон хуудастай төстэй), тэдгээр эх зургийг янз бүрийн аргаар зурж, будаж, эцэст нь gd-ийн дотоод зургийн форматаас зургийг стандарт болгон хөрвүүлэх боломжийг олгодог. зургийн формат, дараа нь эцсийн зорилго руу илгээнэ үү (хөтчийн цонхонд гаргах эсвэл файл эсвэл мэдээллийн санд хадгалах). Эдгээр бүх үйлдлүүд нь програмын хяналтан дор хийгддэг бөгөөд гараар хийгддэггүй тул бүтээгдсэн зургууд нь хүссэнээрээ төвөгтэй болж, програмыг хэрэгжүүлэх явцад ямар ч нөхцөл байдлаас шалтгаалж, тэдгээрийг хамааралтай болгох нь зүйтэй юм.

Зургийн форматууд

gd номын сан нь үндсэндээ олон төрлийн форматыг ашиглан зургийг импортлох, экспортлох боломжийг олгодог. Хамгийн алдартай зургийн форматууд нь GIF, JPEG, PNG боловч жишээнүүдэд сүүлийнх нь ашиглагддаг.

GIF болон PNG форматууд нь зарим нэмэлтүүдээр пикселтэй харгалзах өнгөт элементүүдийн сүлжээг дүрслэх зорилготой юм. Эхний нэмэлт нь нүднүүд нь бодит өнгөт тоо эсвэл индексийг өнгөт тооны хүснэгтэд агуулж болно. (Эхний сонголт нь танд илүү тод дүрс үүсгэх боломжийг олгодог, учир нь энэ нь танд ямар ч тооны өөр өөр өнгө өгөх боломжийг олгодог бөгөөд сүүлийн сонголт нь илүү авсаархан зургийг бүтээхэд тусалдаг.)

Хоёр дахь нэмэлт нь дараах байдалтай байна. Мэдээжийн хэрэг, GIF болон PNG форматын концепцийн дүрслэл нь маш энгийн боловч практик дээр эдгээр форматын зургийг унших, бичих, дамжуулах нь үргэлж шахсан хэлбэрээр хийгддэг. Нүдний сүлжээ хэлбэрээр дүрслэгдсэн өгөгдлийг хадгалахад их хэмжээний санах ой шаардагддаг тул шахах шаардлагатай. Энгийн 500x400 пикселийн зураг нь 200,000 пикселийг агуулдаг бөгөөд хэрэв пиксел бүр гурван байт шаардлагатай бол санах ойн хэмжээ хагас мегабайтаас илүү байна.

Шахалтын сэдэв нь өргөн бөгөөд төвөгтэй сэдэв боловч ихэнх шахалтын алгоритмууд нь түүний хэмжээг багасгахын тулд зургийн илүүдлийг багасгахад суурилдаг. (Жишээ нь, пиксел бүрийн ногоон утгыг тус тусад нь зааж өгснөөс зураг дээрх пиксел бүрийг ногоон гэж зааж өгөхөд санах ойн зай бага байх болно.) Харамсалтай нь шахалтын алгоритмууд эдгээр шинж чанаруудыг ашиглахад тулгуурладаггүй. GIF форматаар зураг үүсгэхэд ашигладаг шахалтын алгоритмд хэрэгжсэн эдгээр асуудлыг шийдвэрлэх аргуудыг хүртэл патентжуулсан нарийн төвөгтэй асуудлууд.

Номын санг суулгаж байна

Үнэнийг хэлэхэд, gd номын санг суулгаж, PHP системтэй хослуулан амжилттай ажиллуулах ажил нэлээд төвөгтэй байдаг. Энэ нь PHP эсвэл gd програм хангамжийн ямар нэгэн дутагдалтай холбоотой биш, харин бүхэлдээ тохиргооны асуудлаас үүдэлтэй; ялангуяа, та gd номын сангууд хаана байх ёстойг, мөн хаана байх ёстойг ойлгож, бүх гүйцэтгэгдэх файлуудын эмхэтгэх, холбох алхмуудыг зөв бөглөсөн эсэхийг шалгах хэрэгтэй. Тиймээс хэрэглэгч gd номын сан аль хэдийн суулгагдсан, gd дэмжлэг PHP системд аль хэдийн идэвхжсэн болохыг олж мэдсэн байх нь хамгийн сайн нөхцөл юм (вэб хостинг компанийн зөвшөөрлөөр эсвэл суулгасан PHP системд орсон учраас).

Тиймээс gd номын санг суулгах нь тэгээс эхлэх ёстой - энэ номын сан аль хэдийн суулгасан эсэхийг шалгана. Эхлээд скрипт файлдаа дараах кодыг оруулаад, таны скриптийг вэб хостинг компани ажиллуулж байгаа эсэхээс үл хамааран хөтөч дээрээ ажиллуулсны үр дүнг харна уу.

Энэ хуудсыг дэлгэцэн дээр харуулсны дараа хөтөчийн цонхноос "gd" гэсэн текстийн мөрийг хайхад л хангалттай. Энэ нь таны PHP суулгац gd номын санд хэр зэрэг дэмжлэг үзүүлж байгааг тайлбарласан дэд хэсгийг харуулах ёстой. Хэрэв та зөвхөн тодорхой төрлийн зураг (жишээ нь PNG) бэлтгэхийг зорьж байгаа бөгөөд phpinfo() функцийн үр дүн нь тухайн төрлийн зургийн дэмжлэг идэвхжсэн болохыг харуулж байгаа бол та шууд эхлүүлж болно. Хэрэв gd хувилбарын мэдээлэлд "багцлагдсан" гэсэн үг орсон бол PHP-тэй хамт ирдэг gd номын санг ашигладаг.

Хэрэв gd номын сангийн тухай дурьдсаныг олох оролдлого бүтэлгүйтсэн бөгөөд та өөрөө PHP суулгаж байгаа бол gd номын сангийн тохиргоог суулгаж, тохируулж болно. (Нөгөө талаас, хэрэв таны PHP суулгацыг таны хостинг компани хариуцаж байгаа бол таны цорын ганц сонголт бол тухайн компаниас gd номын санд дэмжлэг үзүүлэх эсвэл өөр вэб хостинг компани ашиглах явдал юм.)

PHP-тэй хамт ирдэг gd номын санг ашиглах нь gd суулгахтай холбоотой олон бэрхшээлийг арилгадаг ч бүгдийг нь биш. Үнэн хэрэгтээ түгээлтийн хэрэгсэлд багтсан хувилбарыг ашигласнаар gd номын санг авах боломжтой боловч gd-д ажиллахад шаардлагатай бүх сангуудыг авах албагүй. gd номын сан нь өөрөө өөр хэд хэдэн сангаас хамаардаг: libpng (PNG зурагтай ажиллахад зориулагдсан), zlib (шахах) болон jpeg-6b эсвэл түүнээс хойшхи (шаардлагатай бол JPEG зургийг удирдахад зориулагдсан). Эдгээр сангууд нь Линуксийн олон суулгацуудад аль хэдийн байдаг бөгөөд энэ тохиолдолд суулгацын лавлахыг заахгүйгээр шаардлагатай сонголттой (жишээ нь --with-zlib) сонголтуудад оруулахад хангалттай. Хэрэв та PHP тохиргоог өөрөө хийвэл --with-gd сонголтыг нэмж gd-ийн оруулсан хувилбарыг гүйцэтгэх файлд оруулсан эсэхийг баталгаажуулах боломжтой. Хэрэв та өөр хувилбар руу чиглүүлэхийг хүсвэл оронд нь --with-gd=path сонголтыг ашиглана уу.

Хэрэв та нэг буюу хэд хэдэн шаардлагатай номын сан байхгүй бол тэдгээр номын сангуудыг тусад нь барих шаардлагатай болно гэсэн үг. Одоогийн хувилбаруудыг хаанаас олох талаар мэдээлэл авахыг хүсвэл www.libgd.org сайтад байгаа баримт бичгүүдийг үзэж эхэлж болно.

gd номын сантай ажиллах үндсэн зарчим

gd хэрэглүүрийг ашиглан зураг үүсгэх эсвэл өөрчилсөн тохиолдолд уг дүрс нь ямар ч ердийн зургийн төрөлтэй тохирохгүй тусгай gd форматаар дүрслэгддэг. Онолын хувьд энэ gd форматаар зургийг экспортлох боломжтой боловч үүссэн дүрс нь шахагдаагүй, хөтөч эсвэл энгийн график программ дээр харуулах боломжгүй тул ийм үйлдлийг бараг ашигладаггүй.

gd хэрэглүүрийг ашиглан боловсруулсан зураг нь бүх пикселийн өргөн, өндөр, өнгөний талаарх мэдээллээр тодорхойлогддог бөгөөд тэдгээрийн тоо нь өргөн ба өндрийн үржвэртэй тэнцүү байна. Ер нь програм gd номын сантай харилцахдаа шинэ хоосон зураг үүсгэх (түүн дээр зурах, зурах), эсвэл файлаас зураг импортлох замаар эхэлдэг. Дараах алхмуудыг ихэвчлэн гүйцэтгэдэг: нэгдүгээрт, зураг дээрх өнгийг хуваарилах, хоёрдугаарт, зураг зурах, будах, эсвэл бусад үйлдлүүдийг ашиглан дүрсийг удирдах, гуравдугаарт, зургийг нийтээр хүлээн зөвшөөрөгдсөн формат руу хөрвүүлэх (жишээлбэл, PNG эсвэл JPEG) болон түүнийг зорьсон газар руу нь шилжүүлэх.

Өнгөний төлөөлөл

gd зураг дээрх өнгийг дүрслэх хоёр арга байдаг: 256 өнгөөр ​​хязгаарлагдах палитрт суурилсан дүрслэл, RBG өнгөний өөр өөр дугаарыг дурын тоог зааж өгөх боломжийг олгодог жинхэнэ өнгөт дүрслэл. gd 1.x-д палитр дээр суурилсан өнгийг ашиглах цорын ганц сонголт байсан бол gd 2.x болон PHP-д багтсан энэхүү номын сангийн хувилбарт палитр дээр суурилсан зураг болон зургийг бодит өнгөөр ​​бүтээх боломжтой. Анхаарах зүйл бол аливаа gd зураг нь палитр дээр суурилсан эсвэл бодит өнгө (RGB) байх ёстой; Энэ нь палитр дээр суурилсан зургуудад бодит өнгө оруулах сонголт байхгүй гэсэн үг юм.

Палетт дээр суурилсан анхны хоосон зургийг авахын тулд та ImageCreate() функцийг дуудах хэрэгтэй бөгөөд зургийг жинхэнэ өнгөөр ​​авахын тулд ImageCreateTrueColor() функцийг ашиглах хэрэгтэй.

Палетт дээр суурилсан зургууд

Өнгө нь 0-ээс 255 хүртэлх гурван тоог ашиглан Улаан-Ногоон-Цэнхэр (RGB) форматаар тодорхойлогддог. Жишээлбэл, тоонуудын (255, 0, 0) заасан өнгө нь тод улаан, өнгө нь ( 0, 255, 0) - ногоон, өнгө (0, 0, 255) - цэнхэр, өнгө (0, 0, 0) - хар, өнгө (255, 255, 255) - цагаан ба өнгө (127, 127, 127) - саарал. Илүү олон шинэ өнгө бий болгосноор та гурван өнгөт бүрэлдэхүүн хэсгийн утгыг дур зоргоороо сонгож болно.

Зурган дээрх аливаа зургийг тодорхой өнгөөр ​​хийсэн байх ёстой бөгөөд тэдгээрийг хэрэглэхийн өмнө өнгө нь зураг дээр тархсан байх ёстой. Нэмж дурдахад, зураг дээр тархсан эхний өнгө нь автоматаар дэвсгэр өнгө болно. Тиймээс, ямар ч тохиолдолд та өнгө зааж өгөхгүйгээр хийж болно гэж бодож болохгүй бөгөөд ихэвчлэн өнгө хуваарилах ажиллагаа нь шинэ хоосон зураг үүсгэсний дараа хийх эхний үйлдэл юм.

Палетт дээр суурилсан зургийн өнгийг imagecolorallocate() функцийг ашиглан бүтээдэг бөгөөд энэ нь зураг (өмнө нь үүсгэсэн) болон улаан, ногоон, цэнхэр өнгийн харьцааг зааж өгсөн гурван бүхэл тоог параметр болгон авдаг. Буцах утга нь зургийн дотоод палитр дахь шинэ өнгөний индексийг зааж өгөх бүхэл тоо юм. Заасан индексийн утга нь энэ өнгийг ашиглан цаашдын бүх үйлдлийг гүйцэтгэхэд шаардлагатай тул энэ буцаах утгыг хувьсагчид оноох ёстой.

Палетт дээр суурилсан зургууд нь дээд тал нь 256 өнгөний тоотой байж болно. (Уншигчид ийм зураг яг юунд тулгуурласан болохыг сонирхохгүй байж магадгүй ч палитрт суурилсан зургийн пиксел бүр индексийг хадгалдаг нэг байт байдаг. 256 өнгөний палитрт нэг элементийн.)

Зурган дээрх өнгөний аль нэгийг тараахад буцаасан индекс нь зөвхөн тухайн зургийн хувьд л ач холбогдолтой гэдгийг анхаарна уу. Жишээлбэл, PHP скрипт нь нэг зураг дээр тархсан өнгөнд $black гэж оноодог бол өөр зураг боловсруулахаар дуудагдсан зургийн командын өнгөний оролт болгон энэ хувьсагчийг ашиглах нь утгагүй болно.

Бодит өнгө бүхий зургууд

gd 2.0 болон түүнээс хойшхи хувилбарууд нь пиксел бүрт дурын RGB өнгөний дугаарыг хадгалдаг палитрт суурилсан бус зургийг бүтээх боломжийг олгодог. Үнэн өнгө гэж нэрлэгддэг энэхүү форматын хувьд боломжит өнгөний тоо маш их байдаг. Энэ функц нь уран сайхны илэрхийлэлийн хүрээг хязгааргүй өргөжүүлээд зогсохгүй gd хэрэглүүрийг ашиглан санах ойд ачаалагдсан бодит өнгө бүхий PNG болон JPEG зургийг үнэнчээр хуулбарлах боломжийг олгоно.

Анхны зургийг бүтээхэд өөр функцийг ашигладаг бөгөөд өөр өөр өнгө сонгоход ямар ч хязгаарлалт байхгүй бол жинхэнэ өнгөт зурагтай ажиллах зарчим нь палитр дээр суурилсан зургуудтай төстэй юм.

Ялангуяа та шинэ өнгө үүсгэхийн тулд ImageColorAllocate() руу залгаж, дараа нь зурах командуудад ашиглах буцах утгыг хувьсагчдад оноож болно. Ганц ялгаа нь буцах утга нь палитр дахь элементийн индекс биш RGB өнгөний дугаар юм. Нэмж хэлэхэд, бодит өнгө бүхий зургуудад ImageColorAllocate() функцийн гаж нөлөөгөөр үүсгэсэн дэвсгэр өнгөний тухай ойлголт байдаггүй; Эхлэхийн үр дүнд бүх пикселүүдэд хар (0, 0, 0) тэмдэглэгээ өгдөг.

Ил тод байдал

gd 2.x хувилбарууд нь ил тод байдлын тухай ойлголтыг дэмждэг. Энэ нь альфа сувгийг (улаан, ногоон, цэнхэр утгуудаас гадна) ашигладаг бөгөөд өнгө нь хэр ил тод болохыг харуулж байна. Энэ нь жишээлбэл, нэг дүрсийг нөгөөд нь наах боломжийг олгодог бөгөөд ингэснээр эхний хэлбэр нь хоёр дахь нь бүрэн давхцахаас илүүтэйгээр хэсэгчлэн харагдах болно.

PHP-д зурагтай ажиллах олон функцууд нь нэрэнд нь "альфа" гэсэн үг агуулсан аналогтой байдаг бөгөөд энэ нь эдгээр функцүүдэд өнгө нь дөрвөн утгыг (R, G, B, A) төлөөлдөг болохыг харуулж байна. Жишээлбэл, imageColorAllocate() функц нь гурван параметрийг авах ба ImageColorAllocateAlpha() функцийг дуудахдаа та 0-127 хүртэлх утгатай дөрөв дэх параметрийг зааж өгөх ёстой. Тэгийн утга нь өнгө нь бүрэн тунгалаг болохыг илтгэнэ, мөн утгыг илэрхийлнэ. 127 нь өнгө нь бүрэн тунгалаг болохыг харуулж байна.Тунгалаг

Координат ба зургийн командууд

gd хэрэглүүрийг ашиглан зураг үүсгэсний дараа координатын системийг далд хэлбэрээр үүсгэсэн бөгөөд энэ нь танд зургийн командуудыг зааж өгөх боломжийг олгодог. Энэ систем дэх хязгаарлагдмал координатын утгыг зургийн өргөн ба өндрийн тодорхойлсон параметрүүдээр тодорхойлно.

Энэ систем дэх координатын гарал үүсэл нь координатад (0, 0) харгалзах нь зургийн зүүн дээд буланд байрладаг. X утгын эерэг чиглэл нь зүүнээс баруун тийш, Y утгын хувьд дээрээс доош байна. (Компьютерийн графикийн координатын системд гарал үүслийн энэ байрлал түгээмэл байдаг ч аналитик геометрийг судалсан хүмүүс диаграммын зүүн доод буланд гарал үүслийг байрлуулсанд дассан байх шиг байна.)

Зурах командын тоо маш их байна. Эдгээр командуудад шугамын сегмент, тэгш өнцөгт, нум зурах командууд, мөн пикселийн тодорхой утгыг тохируулах командууд багтдаг боловч үүгээр хязгаарлагдахгүй. Гэхдээ эдгээр бүх зурах, зурах командуудын эцсийн үр дүн нь пикселийн утгыг тохируулах явдал гэдгийг санаарай. Пикселийн утгыг өөрчилдөг командуудыг гүйцэтгэсний дараа санах ойд ямар ч ул мөр үлдэхгүй (өөрчлөгдсөн утгуудаас бусад), тиймээс зурах, зурах командуудыг хүчингүй болгох эсвэл өөр өөр командын үр дүнг тусад нь харуулах арга байхгүй.

Заасан зургаас давсан зурах командуудад саад болох зүйл байхгүй, гэхдээ ийм зураг нь харагдахуйц нөлөө үзүүлэхгүй. Жишээлбэл, бүх координатын утга сөрөг байвал тэгш өнцөгт зураг дээр харагдахгүй.

Формат хөрвүүлэх

Зурах болон дүрс засах бүх үйлдлүүд дотоод gd форматаар дүрслэгдсэн зураг дээр хийгддэг. Мөн эдгээр үйлдлүүд дууссаны дараа скрипт нь хөрвүүлэх болон гаралтын командуудын аль нэгийг (imagepng, imagetjpeg гэх мэт) дуудаж, энэ зургийг шаардлагатай график формат руу хөрвүүлж, хэрэглэгчийн хөтөчийн цонхонд (эсвэл файл руу) гаргах боломжтой.

Нөөцийг чөлөөлж байна

Дууссан gd дүрсийг хөрвүүлсний үр дүнг хэрэглэгчдэд шилжүүлсний дараа дотоод хувилбартай ажиллах ажил дууссан гэж үзэж болно. Энэ нь энэ хувилбарыг устгах ёстой гэсэн үг юм. Үүнийг хийх хамгийн зөв арга бол imagedestroy()-г дүрсийг параметр болгон дуудах явдал юм.

gd номын сангийн функцууд

Бид энэ нийтлэлд PHP орчуулагчийн gd интерфэйс дэх бүх функцийг тусад нь жагсааж, тайлбарлахгүй. Энэ мэдээлэлтэй танилцахын тулд бид php.net гарын авлагын "Зураг боловсруулах ба үүсгэх" хэсгийг ашиглахыг зөвлөж байна. Ихэнх gd функцууд нь доорх хүснэгтэд үзүүлсэн ангиллын аль нэгэнд багтдаг. Үг бүрийн эхний үсгийг уншихад хялбар болгох үүднээс энэ хүснэгтэд жагсаасан функцүүдийн нэрсийг том үсгээр бичсэн байгаа боловч PHP функцын нэр нь жижиг жижиг үсгийг том үсгээр бичсэн байдаг тул кодын жишээн дээр энэ нөхцөл үргэлж ажиглагддаггүй болохыг анхаарна уу:

gd функцүүдийн ангилал Жишээ тэмдэглэлийг бичнэ үү
Зураг үүсгэх функцууд ImageCreate(), ImageCreateTruecolor(), ImageCreateFromGd(), ImageCreateFromJpeg() Шинэ gd зураг буцаана уу. ImageCreate() функц нь зургийн өргөн ба өндрийг параметр болгон авдаг бөгөөд бусад функцуудын параметрүүд нь файлын зам, URL эсвэл өмнө нь үүсгэсэн зургийг агуулсан мөр бөгөөд ачаалж gd формат руу хөрвүүлэх шаардлагатай.
Өнгө хуваарилах үйлдлийг гүйцэтгэдэг функцууд ImageColorAllocate(), ImageColorAllocateAlpha(), ImageColorDeallocate() ImageColorAllocate() функц нь зургийн бариул болон шаардлагатай улаан, ногоон, цэнхэр гэсэн утгыг параметр болгон авч, дараа нь зурах, зурах үйл ажиллагаанд ашиглах өнгөний дугаарыг буцаана. ImageColorAllocateAlpha функц нь нэмэлт параметрийг хүлээн авдаг - ил тод байдлын коэффициент (0-127)
Өнгө тааруулах үйлдлийг гүйцэтгэдэг функцууд ImageColorClosest(), ImageColorClosestAlpha(), ImageColorExact(), ImageColorExactAlpha() Палетт зураг дээрх тохирох өнгөний индексийг буцаана уу. Тэдний нэрэнд "Хамгийн ойр" гэсэн үгийг агуулсан функцууд нь хамгийн ойрын өнгийг буцаана (тохирох нарийвчлалыг RGB утгын зай дахь цэгүүдийн хоорондох зайгаар хэмждэг); "Яг" гэсэн тэмдэглэгээтэй функцууд хайсантай ижил байвал өнгөний дугаарыг буцаана, эс тэгвээс -1 утгыг буцаана, "Альфа" нэртэй функцууд нь дөрвөн утгыг ашиглан тодорхойлогддог өнгөнүүд дээр ажилладаг. ил тод өнгө)
Шугаман зургийн функцууд ImageLine(), ImageDashedLine(), ImageRectangle(), ImagePolygon(), ImageEllipse(), ImageArc() Эдгээрийг заасан хэлбэрийн шулуун сегмент эсвэл муруй зурахад ашигладаг. Ерөнхийдөө эдгээр функц бүрийн эхний параметр нь зураг, сүүлчийн параметр нь өнгө, завсрын параметр нь X ба Y координат юм.
Зургийн үзэгний тохиргоо ImageSetStyle(), ImageSetThickness() Дараачийн шугам зурах командын дагуу үүсгэсэн шугамын шинж чанарт нөлөөлөх тохиргоог өөрчлөх (эдгээр функцүүдийн зарим нь зөвхөн gd 2.0.1 буюу түүнээс хойшхи хувилбаруудад хэрэглэгдэх боломжтой)
Зурах, дүүргэх функцууд ImageFilledRectangle(), ImageFilledEllipse(), ImageFilledPolygon(), ImageFilledArc(), ImageFill() Дүрмээр бол тэдгээр нь шугам зурахад тохирох функцтэй төстэй боловч тэдгээр нь зөвхөн талбайн контурыг зурахаас гадна үүссэн хэсгүүдийг өнгөөр ​​дүүргэх боломжийг олгодог. ImageFill() тусгай функц нь заасан дүүргэлтийн өнгийг ашиглан дүүргэх үйлдлийг гүйцэтгэдэг. Бөглөх нь заасан XY координатаас эхлэн бүх чиглэлд хийгддэг (эдгээр функцүүдийн зарим нь gd 2.0.1 эсвэл түүнээс дээш хувилбарыг шаарддаг)
Тексттэй ажиллах функцууд ImageString(), ImageLoadFont() ImageString функц нь зургийн бариул, үсгийн дугаар, X ба Y координат, текстийн мөр, өнгийг параметр болгон авдаг. Хэрэв фонтын дугаар нь 1-ээс 5-ын хооронд байвал таван суурилагдсан фонтын аль нэгийг нь мөрийг энэ өнгөөр ​​харуулахад ашигладаг. Нөгөө талаас, 5-аас их үсгийн дугаар нь ImageLoadFont() функцийг ашиглан тусгай фонт ачаалсны үр дүнг заана.
Экспортын функцууд ImagePng(), ImageJpeg() Дотоод gd дүрсийг тохирох форматтай зураг болгон хувиргаж, дараа нь энэ зургийг гаралтын урсгал руу илгээнэ үү. Хэрэв зөвхөн нэг параметрийг (зургийн бариул) зааж өгсөн бол зураг нь хэрэглэгчдэд сонсогдох бөгөөд хэрэв файлын зам болох нэмэлт параметрийг ашиглавал гаралтын урсгалын очих газар нь файл болно.
Зургийг устгах функц ImageDestroy() Зургийн бариулыг параметр болгон авч, зурагтай холбоотой бүх нөөцийг гаргадаг
HTTP зургийн дэмжлэг

Зургийг хэрэглэгчийн хөтөч дээр зөв харуулахын тулд зураг хаанаас, ямар форматтай байх ёстойг зааж өгөх шаардлагатай. Тиймээс, харамсалтай нь, жишээ нь, үүсгэсэн HTML файлд imageToPng() функцийг дуудаж, дүрсийг харуулах асуудлыг шийдэх боломжгүй юм. Үндсэндээ та зургийн гаралтын кодыг PHP скрипт дээр үүсгэсэн HTML кодтой хооронд нь оруулах ёстой бөгөөд үүнийг хийхийн тулд доор тайлбарласан гурван сонголтын аль нэгийг ашиглаж болно.

Бүтэн хуудасны зураг үүсгэх

Үүсгэсэн хуудсыг бүхэлд нь зураг хэлбэрээр форматлаж болно. Энэ тохиолдолд та зургийн өгөгдлийн өмнө HTTP толгойг дамжуулж, дараа нь тодорхой төрлийн зураг байна гэж зарлах хэрэгтэй. Жишээлбэл, скриптийн төгсгөлд дараах мөрүүдийг өгч болно.

// ... зураг үүсгэж, түүнийг // хувьсагчид оноох код $image header("Content-type: image/png"); // Хөтөч дээр гарчгийг харуулах imagepng($image); // Зургийн өгөгдлийг өөрөө дамжуулж, PNG формат руу хөрвүүлсэн imagedestroy($image); // Нөөцүүдийг гаргах

Энэхүү аргын давуу тал нь аливаа мэдээлэл, түүний дотор POST параметрүүдийг ирээдүйн зургийн найрлагын талаархи зааврыг дамжуулахад ашиглаж болно. Сул тал нь гарч ирсэн хуудас нь ердийн HTML кодыг агуулж болохгүй. Үнэн хэрэгтээ та скрипт дэх гарчиг, зургийн өмнө ямар ч текстийн гаралтыг илгээхгүй байхаас болгоомжлох хэрэгтэй, учир нь энэ нь агуулгыг хугацаанаас нь өмнө илгээсэнтэй адил юм. Энэ тохиолдолд "Толгойг аль хэдийн илгээсэн ..." алдааны мэдэгдэл гарч ирнэ.

Файлд хадгалагдсан зургуудыг оруулах

Юуны өмнө HTML нь тодорхойлогчийг дэмждэг болохыг анхаарна уу , энэ нь танд дараах жишээн дээрх зургийн файлын зам эсвэл URL-г зааж өгөх замаар зураг оруулах боломжийг олгоно.

Энэ загвар нь статик зургийн файлд хамаатай боловч шинээр үүсгэсэн дүрсийг оруулахыг идэвхжүүлж чадаагүй шалтгаан байхгүй. Тиймээс та эхлээд зураг үүсгэсэн скриптийг бэлтгэж, дараа нь зургийн өгөгдлийг локал файлд бичиж, дараа нь харгалзах тодорхойлогчтой HTML кодыг үүсгэж болно. , шинээр үүсгэсэн файл руу заана.

Энэ аргын цорын ганц сул тал бол нэгдүгээрт, хуудас үүсгэх процесс нь файл бичихийг багтаасан байх ёстой бөгөөд энэ нь цаг хугацаа их шаарддаг, хоёрдугаарт, та файлуудыг ашиглаж дуусаад юу хийхээ тодорхойлох ёстой.

Гэхдээ тодорхой нөхцөлд энэ арга нь хамгийн тохиромжтой. Энэ нь хязгаарлагдмал сонголтуудыг төлөөлөх зургуудыг үүсгэх, кэшлэх тухай юм. Энэ тохиолдолд тодорхой нөхцөл байдлыг зургийн файлын нэртэй холбох тодорхой арга байдаг. Зургийг гаргах шаардлагатай эдгээр нөхцөл байдлын зарим нь гарч ирэхэд холбогдох файл байгаа эсэхийг шалгана. Хэрэв хариулт эерэг байвал энэ файлын линкийг тайлбарлагч хэлбэрээр форматласан болно , хэрэв хариулт нь үгүй ​​бол зураг үүсгэж, файлд бичиж, дараа нь энэ зургийн холбоосыг дахин ашиглана. Эцсийн эцэст шинэ файл үүсгэх шаардлагагүй болно.

Скрипт дээр үүсгэсэн зургуудыг оруулах

Эцэст нь хэлэхэд, та бие даасан зургийн скрипт өгч, дараа нь тодорхойлогч хэсэгт зааж өгснөөр үүссэн зургийг өөр скриптээр үүсгэсэн динамик хуудсанд оруулах боломжгүй байх шалтгаан байхгүй. Энэ скриптийн URL. Цорын ганц бэрхшээл бол шаардлагатай өгөгдлийг хамааралтай хуудас руу хэрхэн шилжүүлэхийг сонгох явдал юм. Жишээлбэл, суулгасан дүрсийг харуулсан бариул дараах байдалтай байж болно.

Энэ тохиолдолд ballpage.php скрипт нь зургийн янз бүрийн байрлалд байрлах өнгөт бөмбөгний PNG зургийг буцаана.

Гэхдээ энэ аргыг ашиглах нь асуудал үүсгэж болзошгүй тул вэб серверүүд болон хөтчүүд заримдаа боловсруулж буй файлуудын дагаваруудыг шалгаж, шалгалтын үр дүнг хүлээн авахдаа өөр өөр хариу үйлдэл үзүүлдэг. Жишээлбэл, Apache сервер серверийн кодыг PHP код гэж тайлбарлах ёстойг тодорхойлохын тулд ballpage rendering скриптэд .php өргөтгөл өгөх шаардлагатай байж магадгүй (хэдийгээр шаардлагатай боловсруулалтын горимыг тохиргооны файлуудаар дамжуулан зааж өгч болно).

Гэсэн хэдий ч, дамжуулсан толгой нь зураг дагаж байгааг харуулж байгаа ч .php өргөтгөлтэй файл нь зураг үүсгэх боломжийг тооцдоггүй вэб хөтчүүдийн стандарт бус хувилбарууд байдаг. Тиймээс, энэ аргыг ашиглахдаа та скриптүүдийг өөр өөр хөтөч дээр туршиж үзэх хэрэгтэй бөгөөд хэрэглэгчдийн төлөвлөсөн хүрээлэл хуудсуудыг таны хүссэн хэлбэрээр хүлээн авах болно.

Зураг үүсгэхийн тулд gd номын санг ашиглах жишээг доор харуулав.

gd номын санг ашиглах жишээ: энгийн дүрс үүсгэх

Дараах жишээн дээр бид gd номын санг энгийн геометрийн дүрс бүхий зураг үүсгэхийн тулд хэрхэн ашиглахыг харуулах болно.

Тохиргоог өөрийн тохиргоогоор сольж, энэ файлыг connect-to-database.php нэрээр fcdemo хавтсанд хадгална уу.

Санамсаргүй өгөгдөл оруулъя

Хэрэв энэ нь бодит төсөл байсан бол хэрэглэгчдийн хүснэгт цаг хугацааны явцад өсөх болно, гэхдээ харуулахын тулд бид зарим өгөгдлийг оруулах хэрэгтэй. Хүснэгтэнд санамсаргүй өгөгдөл оруулах жижиг скрипт бичье. Хэрэв та дараах кодыг ойлгохгүй байвал санаа зовох хэрэггүй - энэ зааварт энэ нь чухал биш юм.

Genere-random-data.php нэртэй энэ файлыг бүгдийг нь нэг хавтсанд хадгал.

Эхлээд бид мэдээллийн сангийн холболтын файлыг оруулна. Дараа нь бид хэрэглэгчийн бүртгүүлэх хугацааг санамсаргүй байдлаар сонгох хугацааг тогтооно. Та оруулах мөрийн тоог өөрчилж болно. Үүнийг хийхийн тулд та $RecordsToInsert хувьсагчийг тохируулах хэрэгтэй.

Дараа нь бид үүсгэсэн бичлэгүүдийг мэдээллийн санд оруулах скриптийг ажиллуулна. Энэ процессыг эхлүүлэхийн тулд энэ хаяг руу очно уу - http://localhost/fcdemo/generate-random-data.php.

Эцэст нь та "Оруулах ($RecordsToInsert) бичлэгүүд" гэсэн мессежийг харах болно.

Алхам 2. Вэбсайтын араг ясыг бэлтгэ

Бид диаграмаа харуулахын тулд маш энгийн хуудас үүсгэх хэрэгтэй. Энэ нь иймэрхүү зүйл:

FusionCharts v3.2 - LinkedCharts PHP Демо