Мне нужно создать радиальный градиент PNG с непрозрачностью. Я просмотрел GDLib, но я не вижу способ генерировать радиальные градиенты. Кто-нибудь знает способ с GDlib или любой другой графической библиотекой для PHP?
Я предполагаю, что в худшем случае я мог бы генерировать пиксель за пикселем, используя GDLib, но как он вообще начинает делать математику?
Цель состоит в том, чтобы генерировать сексуальные эффекты PNG для фона для веб-страниц. Пример эффекта можно увидеть в заголовке здесь, который использует это фоновое изображение . Я пробовал общие эффекты PNG с низким освещением, но он не выглядит нигде ближе, как тонированное освещение, поэтому мои созданные PNG будут учитывать цветовую схему сайта.
Я предполагаю, что серверная сторона – путь, потому что поддержка браузера радиальных градиентов CSS настолько неоднородна.
Почему бы не использовать комбинацию imagecolorallocatealpha () и imageellipse () или imagefilledellipse () ?
Редактировать:
См. Этот класс для примера того, что я имею в виду. Вы должны продлить это для поддержки альфы.
Edit2:
Я внес некоторые изменения в класс выше, чтобы получить альфа-поддержку. Это не идеально, но он работает для эллипсов и таких:
классический трюк видеоигры – применить текстуру градиента, а не вычислять свет. это идеальное применение для этой техники.
сделайте градацию в градациях серого с размером пикселя с большим размером (квадрат 2048 пикселей), а несколько меньших (1024 512,256 пикселей и т. д.) выбирают ближайший для вас (масштабирование может преувеличивать полосу, масштабирование может привести к муару).
используйте функцию php gd, такую как imagecopymerge
. в зависимости от намерения, вы можете сохранить результат при первом использовании.
Я предполагаю, что в худшем случае я мог бы генерировать пиксель за пикселем, используя GDLib, но как он вообще начинает делать математику?
Математика проста: alpha = max_alpha - (distance_to_center / radius)
где расстояние – евклидово, т.е. sqrt( (x1-x2)^2 + (y1-y2)^2 )
.