Радиальные градиенты с непрозрачностью в PHP

Мне нужно создать радиальный градиент PNG с непрозрачностью. Я просмотрел GDLib, но я не вижу способ генерировать радиальные градиенты. Кто-нибудь знает способ с GDlib или любой другой графической библиотекой для PHP?

Я предполагаю, что в худшем случае я мог бы генерировать пиксель за пикселем, используя GDLib, но как он вообще начинает делать математику?

Цель состоит в том, чтобы генерировать сексуальные эффекты PNG для фона для веб-страниц. Пример эффекта можно увидеть в заголовке здесь, который использует это фоновое изображение . Я пробовал общие эффекты PNG с низким освещением, но он не выглядит нигде ближе, как тонированное освещение, поэтому мои созданные PNG будут учитывать цветовую схему сайта.

Я предполагаю, что серверная сторона – путь, потому что поддержка браузера радиальных градиентов CSS настолько неоднородна.

Почему бы не использовать комбинацию imagecolorallocatealpha () и imageellipse () или imagefilledellipse () ?

Редактировать:

См. Этот класс для примера того, что я имею в виду. Вы должны продлить это для поддержки альфы.

Edit2:

Я внес некоторые изменения в класс выше, чтобы получить альфа-поддержку. Это не идеально, но он работает для эллипсов и таких:

http://codepad.org/1eZ3Km0J

классический трюк видеоигры – применить текстуру градиента, а не вычислять свет. это идеальное применение для этой техники.

сделайте градацию в градациях серого с размером пикселя с большим размером (квадрат 2048 пикселей), а несколько меньших (1024 512,256 пикселей и т. д.) выбирают ближайший для вас (масштабирование может преувеличивать полосу, масштабирование может привести к муару).

используйте функцию php gd, такую ​​как imagecopymerge . в зависимости от намерения, вы можете сохранить результат при первом использовании.

Я предполагаю, что в худшем случае я мог бы генерировать пиксель за пикселем, используя GDLib, но как он вообще начинает делать математику?

Математика проста: alpha = max_alpha - (distance_to_center / radius) где расстояние – евклидово, т.е. sqrt( (x1-x2)^2 + (y1-y2)^2 ) .