Изчертаване на кода от "Матрицата" в PHP

Един ден ми хрумна идеята да направя динамично създаден фон за блог под формата на прословутия код от филма „Матрицата“. След като убих вечерта и половината от нощта, все пак постигнах желания резултат и реших да го споделя с хората. За съжаление не съм намерил такова изпълнение, но все пак искам да имам динамично създадена "матрица" като фон за бложика.

И така, ние пишем генератор на код "Matrix" в PHP, използвайки gd библиотеката.

И така, за генерираното изображение са зададени следните изисквания:

1. Колоните на кода не трябва да са еднакви по дължина, дължината трябва да бъде избрана произволно
2. Яркостта на цвета трябва да се увеличава отгоре надолу
3. Подреждането на колоните трябва да бъде произволно, но те не трябва да се припокриват помежду си
4. Получената картина не трябва да се кешира от браузърите, така че с всяка актуализация да се получава нов код
5. Кодът не трябва да лети извън картината.

Нека започнем, всъщност, да генерираме картината.

Първо трябва да разберете какво ще действа като кодови елементи. Матрицата използва както числа, така и кана (японски сричка). Последните изглеждат по-впечатляващи, затова ще го вземем.

Нека създадем функция getJapanSym (), която връща кода на HTML Entity (функцията imagettftext () го използва, но повече за това по-късно).

В Unicode кана варира от 0x3040 до 0x30FF. Именно от този диапазон се изисква код на произволен символ. В резултат получаваме следната функция:
функция getJapanSym ()
$ rnd = rand (hexdec ("3040"), hexdec ("30FF")); // или ските не отиват, или имам крив сървър, но той отказа да работи с числа във формат 0xXXXX
върнете "&#x" .dechex ($ rnd). ";"; // HTML Entity формат, нещо като ア
>

След това трябва да нарисуваме действителната картина. Да вървим по ред.

На първо място, трябва да нарисуваме колона с кана с определен брой знаци. За рендиране ще използваме споменатата по-горе функция imagettftext () от gd библиотеката. Освен това цветът на всеки знак трябва да се различава от предишния, така че тук просто \ n не може да се направи, трябва да напишете цял цикъл.

Самата Cana може да бъде намерена в шрифта Arial Unicode MS, който всъщност използваме.

Функцията за изчертаване на кана в колона изглежда така: