созданиС изобраТСния с тСкстом php

Как нанСсти тСкст Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHP?

PHP – ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования, ΠΈ ΠΌΡ‹ с Π²Π°ΠΌΠΈ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² этом ΡƒΠ±Π΅ΠΆΠ΄Π°Π»ΠΈΡΡŒ. БСгодня ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ – я Π½Π°ΡƒΡ‡Ρƒ вас Π½Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°ΠΌ тСкст Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого языка.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я расскаТу Π²Π°ΠΌ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Π³ΠΎ Π½ΡŽΠ°Π½ΡΠ°Ρ….

1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $font – ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ (Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ошибок) Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС ссылку Π½Π° Ρ„Π°ΠΉΠ» ΡˆΡ€ΠΈΡ„Ρ‚Π°. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΡˆΡ€ΠΈΡ„Ρ‚ Β«ArialΒ».

2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $pic. Π—Π΄Π΅ΡΡŒ Π² зависимости ΠΎΡ‚ вашСго Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° изобраТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

PNG – imagecreatefrompng;
JPG – imagecreatefromjpeg;
GIF – imagecreatefromgif.

3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ $color – Ρ†Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² RGB-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π§Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ – Β«0, 0, 0Β», Π±Π΅Π»Ρ‹ΠΉ – Β«255, 255, 255Β» ΠΈ Ρ‚.Π΄.

4. Ѐункция Β«imagepngΒ». Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

PNG – imagepng;
JPG – imagejpeg;
GIF – imagegif.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ происходило пСрСзаписи Ρ„Π°ΠΉΠ»ΠΎΠ², Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° выступаСт врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° Unix. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹ прописываСтС сами Π² зависимости ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сохранСния.

Ну Π²ΠΎΡ‚, Π²Ρ€ΠΎΠ΄Π΅, ΠΈ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π² ΠΊΠΎΠ΄Π΅.

Π§Π°ΡΡ‚ΡŒ Β«./Β» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ сохранСниС Ρ„Π°ΠΉΠ»ΠΎΠ² осущСствляСтся Π² Ρ‚ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ находится ваш скрипт.

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ вопросы – Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡ… Π² коммСнтариях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста ΠΈ Ρ„ΠΈΠ³ΡƒΡ€ Π½Π° изобраТСниях Π² PHP

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ управлСниями изобраТСниями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PHP. ΠœΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΈΠ»ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΈ ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ ΠΊΠΎΠ½Π²ΠΎΠ»ΡŽΡ†ΠΈΠΈ. Π­Ρ‚ΠΈ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ практичСскиС примСнСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GD, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ всСх ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ водяных Π·Π½Π°ΠΊΠΎΠ² Π½Π° нСсколько ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом phpсозданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом phpсозданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php

Помимо использования GD для управлСния ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ изобраТСниями, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ наш собствСнный с нуля. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для рисования основных Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ эллипсы, ΠΊΡ€ΡƒΠ³ΠΈ, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ простыС Π»ΠΈΠ½ΠΈΠΈ. Π‘ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ нСбольшой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, эти Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ приятныС ΡƒΠ·ΠΎΡ€Ρ‹. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для рисования тСкста Π½Π° отрисованном ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ возмоТностСй.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π°ΡƒΡ‡ΠΈΡ‚ вас, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ основныС Ρ„ΠΎΡ€ΠΌΡ‹ Π² PHP ΠΈ ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ отрисовку тСкста, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ваш Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚Π°.

Рисования основных Ρ„ΠΈΠ³ΡƒΡ€ Π² PHP с GD

ΠœΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎΠ± основных Ρ„ΠΈΠ³ΡƒΡ€ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ рассмотрим Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ Π»ΠΈΠ½ΠΈΠΈ, кисти ΠΈ стили Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎΠ·ΠΆΠ΅.

РисованиС линии

РисованиС ΠΊΡ€ΡƒΠ³ΠΎΠ² ΠΈ Π΄ΡƒΠ³

РисованиС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ²

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всС вмСстС для создания изобраТСния

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания изобраТСния с Π΄ΠΎΠΌΠΎΠΌ, солнцСм ΠΈ Π·Π΅ΠΌΠ»Π΅ΠΉ.

созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом phpсозданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹ Π»ΠΈΠ½ΠΈΠΈ, стиля ΠΈ заполнСния Ρ†Π²Π΅Ρ‚Π°

Π’ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ

РисованиС Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€

КаТдая функция рисования Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ†Π²Π΅Ρ‚Π°, которая заполняСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. НапримСр, imagefilledrectangle() окрасит отрисованный ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

ИспользованиС кисти

Π― нашСл ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Pixabay ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ» Π΅Π³ΠΎ Π΄ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НиТС приводится ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для изобраТСния Π΄ΠΎΠΌΠ°. ΠœΡ‹ просто Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π΅ вСрсии ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΎΠ΄Π΅Ρƒ для рисования ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, Π° другая для заполнСния Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

Π­Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ PHP-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ GD.

созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом phpсозданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста Π½Π° изобраТСниях

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ отобраТСния тСкста, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ обсуТдали Π²Ρ‹ΡˆΠ΅ вСсьма ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ самоС большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° слишком малСнькоС для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ использования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, тСкст ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… приятных тСкстовых эффСктов.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΌΡ‹ отрисовали ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСкст с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ Π² слСгка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ для создания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… эффСктов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π΅Π½ΡŒ. Π’Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ тСкст, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ любой тСкстовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скроСт тСкст Π½ΠΈΠΆΠ΅ Π² случаС налоТСния. Π’ΠΎΡ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ послС выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π°.

созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом phpсозданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

ЦСль Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ – ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ функциями GD для рисования основных Ρ„ΠΈΠ³ΡƒΡ€ Π² PHP с нуля. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСбольшой ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания Π±ΠΎΠ»Π΅Π΅ слоТных Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Ρ‹, скруглСнныС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ Ρ‚.Π΄.

PHP GD Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для отобраТСния тСкста Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ИспользованиС красивого ΡˆΡ€ΠΈΡ„Ρ‚Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ отрисованный тСкст Π½Π΅ выглядит странным ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.

Π’Ρ‹ создали всС Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ эффСкты тСкста Π² PHP? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΈΠΌΠΈ с Π½Π°ΠΌΠΈ Π² коммСнтариях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ срСдствами PHP

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ рассчитано Π½Π° программистов со срСдним ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ знания PHP.
Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

PHP Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π²Ρ‹Π²ΠΎΠ΄Π° HTML страниц, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠΎΡ‰Π½Ρ‹Π΅ срСдства создания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ «Π½Π° Π»Π΅Ρ‚Ρƒ». ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ лишь нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

* Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ с надписями, тСкст ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
* ГрафичСскоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ статистичСских Π΄Π°Π½Π½Ρ‹Ρ…
* Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GD для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. GD являСтся внСшнСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, доступной Π² Π²ΠΈΠ΄Π΅ модуля PHP

ЦСль этой ΡΡ‚Π°Ρ‚ΡŒΠΈ

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

* Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (headers)
* ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GD для динамичСского создания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ срСдствами PHP
* ИспользованиС HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² для указания Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ PHP-скрипта прСдставляСт собой ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, PHP Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ: Content-type: text/html, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта являСтся HTML ΠΊΠΎΠ΄

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-type: text/html ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ выводится HTML ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Если ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ скаТСм Π½Π° Content-type: text/plain, Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ просто ΠΊΠ°ΠΊ тСкст ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ «ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ» Для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция header().

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ нСдостаточно, Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΈ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. НС слСдуСт Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, просто послав Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-type: application/zip ΠΈ вывСдя «Π’сСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚», Π²Ρ‹ смоТСтС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ скрипта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ WinZip’а.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Web-сСрвСр ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ Content-type, ΠΈΡ… рассмотрСниС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π§Ρ‚ΠΎ Π½Π°ΠΌ потрСбуСтся

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ изобраТСния

ГСнСрация изобраТСния состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных этапов:

* Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ изобраТСния
* ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° изобраТСния
* Π’Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€

Для создания изобраТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ImageCreate(). Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту изобраТСния Π² пиксСлах ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ функция для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° функция ImageColorAllocate(). Π­Ρ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ изобраТСния ΠΈ Ρ‚Ρ€ΠΈ числа, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ (RGB β€” red, green, blue). Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… опСрациях отрисовки изобраТСния.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

БущСствуСт большоС количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ отрисовки ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ПолноС ΠΈΡ… рассмотрСниС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Для ознакомлСния с этими функциями, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ руководству ΠΏΠΎ PHP.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ относятся ΠΊΠΎ всСму Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π²Ρ‹ послали Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст. А послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ‹Π²Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡƒΠΆΠ΅ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ! Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ сначала Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ header() ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± ошибкС. Если Π²Ρ‹ Π½Π΅ посылаСтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-type, PHP автоматичСски посылаСт Content-type: text/html ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ….

Как это выглядит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GD ΠΌΡ‹ рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ скрипта, строящСго Π³Ρ€Π°Ρ„ΠΈΠΊ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². По Ρ…ΠΎΠ΄Ρƒ излоТСния Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

ВСория Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² гласит, Ρ‡Ρ‚ΠΎ ΡΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ, физичСская ΠΈ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° цикличСски ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ роТдСния, всС Ρ‚Ρ€ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ выходят ΠΈΠ· Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСй ΠΆΠΈΠ·Π½ΠΈ. Если кривая ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹ΡˆΠ΅ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ β€” это активная Ρ„Π°Π·Π°, Π½ΠΈΠΆΠ΅ β€” пассивная. ΠœΠΎΠΌΠ΅Π½Ρ‚ пСрСсСчСния Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ критичСский дСнь: Π²Ρ‹ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ риску ΡΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ, физичСской ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ «ΠΊΠ°Ρ‚астрофы». А Π² Ρ‚ΠΎΡ‚ дСнь, ΠΊΠΎΠ³Π΄Π° всС Ρ‚Ρ€ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ проходят Ρ‡Π΅Ρ€Π΅Π· ноль, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ PHP ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ собствСнный Ρ†ΠΈΠΊΠ»:

* ЀизичСская: 23 дня
* Π­ΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ: 28 Π΄Π½Π΅ΠΉ
* Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ: 33 дня

ΠšΡ€ΠΈΠ²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой синусоиды, поэтому для вычислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ sin()

Установка Π΄Π°Ρ‚Ρ‹ роТдСния

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ роТдСния ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, сколько Π΄Π½Π΅ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡ€ΠΎΠΆΠΈΠ» Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ использован для вычислСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ„Π°Π·Ρ‹ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠ°.

* ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π±Ρ‹Π»Π° Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Π° Π΄Π°Ρ‚Π° роТдСния.
* Если Π½Π΅Ρ‚, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒ для Π²Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Ρ‹
* ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄Π° вычисляСм сколько Π΄Π½Π΅ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡ€ΠΎΠΆΠΈΠ» Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ юлианский ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ.

Π‘ΠΎΠ²Π΅Ρ‚ Для вычислСния ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ юлианский ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ. Π”Π°Ρ‚Π° роТдСния ΠΈ тСкущая Π΄Π°Ρ‚Π° пСрСводятся Π² количСство Π΄Π½Π΅ΠΉ ΠΏΠΎ ΡŽΠ»ΠΈΠ°Π½ΡΠΊΠΎΠΌΡƒ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŽ. Π Π°Π·Π½ΠΎΡΡ‚ΡŒ этих Π΄Π²ΡƒΡ… чисСл Π΄Π°Π΅Ρ‚ искомый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция gregorianToJD() Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° PHP (см. ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ скрипта Π½ΠΈΠΆΠ΅). Π’ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ, эта функция Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ PHP, Π½ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ эта функция Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π² послСднСй вСрсии PHP. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»Π° использована «ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Π°Ρ» функция. Если Π² вашСм PHP Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π΅ΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° изобраТСния

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡŽ состоит ΠΈΠ· Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ GD. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ участок ΠΊΠΎΠ΄Π°:

* Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².
* РСгистрируСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ†Π²Π΅Ρ‚Π°.
* ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ изобраТСния, заливая Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°

Π‘ΠΎΠ²Π΅Ρ‚ ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ отрисовки изобраТСния Π·Π°Π»Π΅ΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΠ½ изобраТСния Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для создания ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΠ½Π°, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Для простоты излоТСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ содСрТат ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ошибок. «ΠΠ°ΡΡ‚оящий» скрипт ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ошибки

РисуСм Ρ€Π°ΠΌΠΊΡƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ тСкст

Ѐункция ImageString() рисуСт строку тСкста Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ мСстС. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти ΠΏΡΡ‚ΡŒ строк ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части рисунка ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ роТдСния ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΏΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½. ИспользованиС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ†Π²Π΅Ρ‚ΠΎΠ², записанных Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, позволяСт ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ†Π²Π΅Ρ‚Π°, Π½Π΅ указывая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· RGB значСния.

* РисуСм Ρ€Π°ΠΌΠΊΡƒ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ, ΠΈ оси
* Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ тСкст ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ

Рисунок 1. Π“Ρ€Π°Ρ„ΠΈΠΊ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

РисуСм ΠΊΡ€ΠΈΠ²Ρ‹Π΅

* Ѐункция drawRhythm вызываСтся Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ
* Ѐункция drawRhythm содСрТит Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠΎΡ€ΠΈΡ‚ΠΌΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дня, ΠΈ рисуСт Π»ΠΈΠ½ΠΈΠΈ.

Π‘ΠΎΠ²Π΅Ρ‚ Для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ слСдовало Π±Ρ‹ ΠΏΡ€ΠΈ вычислСниях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ мСньшиС Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ дСнь, ΠΎΠ΄Π½Π°ΠΊΠΎ для Ρ†Π΅Π»Π΅ΠΉ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ качСства изобраТСния Π²ΠΏΠΎΠ»Π½Π΅ достаточно.

Π’Ρ‹Π²ΠΎΠ΄ изобраТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ нарисовали наш Π³Ρ€Π°Ρ„ΠΈΠΊ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ остаСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

* ΠŸΠΎΡΡ‹Π»Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ GIF ΠΈΠ»ΠΈ PNG.
* ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ чСрСсстрочный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния.
* Π”Π΅Π»Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ.
* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ imageGIF ΠΈΠ»ΠΈ imagePNG Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π‘ΠΎΠ²Π΅Ρ‚ ПослС Π²Ρ‹Π·ΠΎΠ²Π° imageGIF ΠΈΠ»ΠΈ imagePNG, измСнСния Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ нСльзя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

ИспользованиС ImageInterlace() позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ чСрСсстрочного ΠΈΠ»ΠΈ прогрСссивного Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ изобраТСния позволяСт это). Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ интСрСсСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π΅Ρ‰Π΅ Π΄ΠΎ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° выводится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Π½ΠΈΠ·ΠΊΠΈΠΌ качСством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ низкоскоростным ΠΊΠ°Π½Π°Π»Π°ΠΌ.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ написали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Как Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? На самом Π΄Π΅Π»Π΅ всС ΠΎΡ‡Π΅Π½ΡŒ просто: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипт Π² HTML ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» изобраТСния. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ скрипт Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ являСтся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Ρ‚ΠΎ для Π΅Π³ΠΎ использования Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти http://my.server.net/script.php Π² Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Для скрипта, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, просто Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² HTML ΠΊΠΎΠ΄ страницы тэг Ρ‚Π°ΠΊΠΎΠ³ΠΎ содСрТания:

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ скрипта

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрСны основы создания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² PHP с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GD. На достаточно слоТном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ изобраТСния Π½Π° основС Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Взяв Π·Π° основу этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ изобраТСния для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

imagefttext

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PHP 8)

imagefttext β€” НанСсСниС тСкста Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ FreeType 2

ОписаниС

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ….

Π£Π³ΠΎΠ» Π² градусах, 0 градусов ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ располоТСниС тСкста слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ тСкста ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки. НапримСр, тСкст ΠΏΠΎΠ²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Π½Π° 90 градусов Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ снизу Π²Π²Π΅Ρ€Ρ….

y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°. Π­Ρ‚ΠΎ позиция Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠ½Π° Π½Π΅ совпадаСт с низшСй Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² символС.

ΠŸΡƒΡ‚ΡŒ ΠΊ TrueType ΡˆΡ€ΠΈΡ„Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ скрипта Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ².

ВСкст для вставки Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния массива options

ΠšΠ»ΡŽΡ‡Π’ΠΈΠΏΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
linespacingfloatΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ рисованиС Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчёркивания

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΠΌΠΊΠΈ тСкста. ВСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ этих Π³Ρ€Π°Π½ΠΈΡ† начинаСтся с Π»Π΅Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΈ поворачиваСтся ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки:

0ниТняя лСвая x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
1ниТняя лСвая y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
2ниТняя правая x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
3ниТняя правая y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
4вСрхняя правая x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
5вСрхняя правая y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
6вСрхняя лСвая x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°
7вСрхняя лСвая y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°

Бписок измСнСний

Π’Π΅Ρ€ΡΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
8.0.0image Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ экзСмпляр GdImage ; Ρ€Π°Π½Π΅Π΅ оТидался рСсурс ( resource ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования imagefttext()

// ΠŸΡƒΡ‚ΡŒ ΠΊ ttf Ρ„Π°ΠΉΠ»Ρƒ ΡˆΡ€ΠΈΡ„Ρ‚Π°
$font_file = ‘./arial.ttf’ ;

// Π’Ρ‹Π²ΠΎΠ΄ изобраТСния
header ( ‘Content-Type: image/png’ );

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

User Contributed Notes 15 notes

Do this as root :
apt-get install libfreetype6-dev

After spending the evening with some work on automatically generated images, I had the idea to switch of anti-aliasing (looking, if some font would look better that way), which turned out not to be quite so easy.

Actually you have to use the negative of the desired color to switch of antialising. I include the corresponding line from my code (line split up):

// USE NEGATIVE OF DESIRED COLOR TO SWITCH OF ANTI-ALIASING
ImageFTText ($neuesBild,$fontsize,$fontangle,$TextPosX,$TextPosY,
-$custom_fg,$fonttype,$text,array());

If you’re interested in turning off FreeType hinting, search for the following line in the gd source (gdft.c):
err = FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT);
and replace it with
err = FT_Load_Glyph (face, glyph_index, FT_LOAD_NO_HINTING);

Recompile GD, and voοΏ½la: beauteous antialiasing.

This function is very simular to imageffttext(), you may find the information provided on its manual page helpful:

For a design project I am required to have spacing between characters; since imagefttext does not support this feature I have created a function which does support this.

The arguments are identical to imagefttext, accept that (array)$extrainfo now accepts the ‘character_spacing’ spacing parameter. The return values are as expected, and include the image boundaries of the entire string including the character spacing.

I hope this is of some use to someone.
— KeepSake

// Required header (assuming we use png images)
header ( «Content-type: image/png» );

could be different. This helped when setting GDFONTPATH.

GD1 was OK as it used pixels for font rendering, but GD2 uses points, which only makes any sense if you know the DPI that it assumes when rendering text on the image surface. I have not been able to find this anywhere in this documentation but have examined the GD2 source code and it appears to assume a DPI of 96 internally. However, this can easily be customised in the GD2 source so it cannot be assumed that all PHP interpreters out there have a GD2 compiled using 96dpi internally.

If it does, and you are using it to construct images whose target DPI is not 96, you can calculate the point size to supply to imageftbox() and imagefttext() like this:

/* 100mm x 100mm image */
$imageWidth = 100 ;
$imageHeight = 100 ;

/* 300 dpi image, therefore image is 1181 x 1181 pixels */
$imageDPI = 300 ;

header ( «Content-type: image/jpeg» );

I found myself in need of an align right function and found one on the imagepstext manual page. I can’t imagine I’m the only person who’s needed to use this, so here’s a slightly modified version that works with imagefttext:

$text1 = «shenko.homedns.org» ; // Here is our text

Thanks for the script! I modified it to show several fonts that I was wanting to use. I am using GD-2.0.7, FreeType-2.1.3(text rotation fix,among others), and PHP-4.2.3 and had to include the array information to get it to work.

Code change follows:
$fontfile=»/usr/local/fonts/ttf/bookantbd.ttf»;
// Waterfall of point sizes to see what Freetype 2’s autohinting looks like:
//
for($i=4;$i 1.0));
>

Since this function is not documented, I felt it was best that I shed some light on the extrainfo parameter.

Basically it accepts an array containing the following options as keys and an associated value:
(int) flags [more info in the GD reference manual]
(double/float) linespacing
(int) charmap
(int) hdpi
(int) vdpi
(string) xshow
(string) fontpath

My C/C++ is not very good but this is the best I can explain. Read the documentation for more information. πŸ™‚

A very simple example of usage would be:

I’m not sure if this is a PHP issue or an GD issue, but after upgrading to PHP 5.3.2, text written at an angle has become top-justified (so «N» and «n» have the same top, but the bottom of the «N» is lower than the bottom of the «n». I’ve written a kludgy work-around, which writes the text to a non-rotated temporary image, then copies the temporary image, rotated onto the main image. The kludginess is to get around the fact that I can’t seem to extract the font info, particularly the distance between the baseline and the very bottom (I’ve hard-coded it as 30% of the font size)
I hope the bug can be fixed (if it is indeed a bug) or that others can improve this code:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

imagestring

(PHP 4, PHP 5, PHP 7, PHP 8)

imagestring β€” РисованиС строки тСкста Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ

ОписаниС

РисуСт тСкст string Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ….

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°.

y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния ΠΈΠ»ΠΈ false Π² случаС возникновСния ошибки.

Бписок измСнСний

Π’Π΅Ρ€ΡΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
8.0.0image Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ экзСмпляр GdImage ; Ρ€Π°Π½Π΅Π΅ оТидался рСсурс ( resource ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования imagestring()

// Π’Ρ‹Π²ΠΎΠ΄ изобраТСния
header ( ‘Content-type: image/png’ );

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС изобраТСния с тСкстом php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС изобраТСния с тСкстом php. Π€ΠΎΡ‚ΠΎ созданиС изобраТСния с тСкстом php

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

User Contributed Notes 31 notes

Some fun with imagestring:

This function is a product of too much time..
It opens an image and create a new image with one letter instead of a pixel.

Here is a function with similar declaration of imagestring() but who handles whitespaces (It creates new lines and 4 spaces instead of \n and \t) and image’s size limits

I like this better than «tjpoe at cableaz dot com»‘s function for wrapping text to fit width (auto-adjusts height as needed) since it doesn’t only do 1 word per line.

// Example
$imgString= convertEmailToImg (‘contact@example.com’, 0, 0, 255, 0, 127, 4);

Simple script to convert a string (such as an email addresses) to a transparent image.

From a spambot’s point of view, they see:

Optional parameters:
font_size: 1 to 5, with the default at 3
R/G/B: the font color, in hex.

Parameters:
string: the string to print
font_size (optional): the size of the font from 1-5
R/G/B (optional): the RGB colors of the font in hex
*/

header ( «Content-type: image/png» );

//simple hello world

Width ImageString, the strings you draw are not automatically wrapped width the edge of the image. You may use this function to automatically wrap them:

// white background and blue text
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);

// output the image
header(«Content-type: image/gpeg»);
imagejpeg($im);
>

If you are looking to center the text, use the following function; I’m not promising perfection.

Creates a box of text. Has horizontal and vertical alignment, box arguments, and custom leading. I submitted this to the manual in 2003 actually, but it disappeared after a year or so (not sure why). Here it is again.

There is an error in «tjpoe at cableaz dot com» ‘s function ImageStringWrap. Instead of

else
$string = array($text);

for function to work for strings with only one word. Otherwise it works like a charm, thanks.

Here is a small bit I made for writing to a image from right to left when you are limited to imagestring()

Its just an easy function to write an string in the middle of a picture.

I created an alternative using the function imagechar to create a string of an image. The below function below was used to create an image the same height and width of the text string. It is used on my website to mask users email addresses.

// Set your string somehow
$string = ‘your@example.com’ ;

// Set font size
$font_size = 4 ;

A simple example:
To make one line of text fit in the image.

If you have any problem with CentralEurope’s words, for example : ľőčΕ₯žýÑíéúÀňôď, I am try this problem by iconv() function.

I’ve made a little modification of the (quite usefull) imagestringcutted function (when align=center, it doesn’t work well for me if x1!=0) so juste replace the last line with :

My version of the centered string, it decreases the font number (since I’ve noticed smaller numbers are smaller fonts) until 1 if the string won’t fit. Then it will give up.

this is a function that is based on imagestring but it produces text in the center of an image i hope it helps πŸ˜€

Drawing a string as an image is a handy way to disguise an eMail address so spam sniffers can’t get it as easily. The only catch to creating a dynamic image with your eMail in it is the eMail to be displayed must be passed via the query string to enable static HTML to use it. So, the eMail must be encrypted slightly in order to not defeat the purpose of not typing your eMail address outright. I wrote the following script to do so:

?>

If the script is called without an eMail address, it outputs a 2×2 transparent image.

To call the script to generate the eMail «user@home.com», the HTML tag would be:

To ‘encrypt’ the eMail address to pass to the script, write the address backwards and replace «.» with «[dot]» and «@» with «[at]». It’s not the most ironclad protection, but it thwarts most casual eMail sniffers.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *