3

我需要创建一个不透明的 PNG 径向渐变。我查看了 GDLib,但看不到生成径向渐变的方法。有谁知道 GDlib 或任何其他 PHP 图形库的方法?

我想在最坏的情况下,我可以使用 GDLib 逐个像素地生成它,但是如何开始计算呢?

目标是为网页生成性感的灯光效果背景 PNG。可以在使用此背景图像的标题上看到效果示例。我已经尝试过通用的白色照明效果 PNG,但它看起来并不像有色照明那样好,所以我生成的 PNG 将考虑网站的配色方案。

我认为服务器端是要走的路,因为浏览器对CSS 径向渐变的支持非常不完整。

4

3 回答 3

1

经典的视频游戏技巧是应用渐变纹理,而不是计算光照。这是该技术的完美用途。

以较大的像素尺寸(2048px 正方形很常见)制作灰度渐变,几个较小的像素(1024,512,256px 等)根据您的需要选择最接近的一个(放大可能会夸大条纹,缩小可能会引入云纹)。

使用 php gd 函数,例如imagecopymerge. 根据意图,您可以在首次使用时存储结果。

于 2011-07-07T18:58:53.320 回答
1

为什么不使用imagecolorallocatealpha()imageellipse()imagefilledellipse()的组合?

编辑:

有关我的意思的示例,请参见本课程。您应该能够扩展它以支持 alpha。

编辑2:

我对上面的类进行了一些修改以产生 alpha 支持。它并不完美,但它适用于椭圆等:

http://codepad.org/1eZ3Km0J

于 2011-07-07T19:03:35.240 回答
1

我想在最坏的情况下,我可以使用 GDLib 逐个像素地生成它,但是如何开始计算呢?

数学很简单,alpha = max_alpha - (distance_to_center / radius)距离是欧几里得,即sqrt( (x1-x2)^2 + (y1-y2)^2 )

于 2011-07-07T19:16:18.997 回答