PHP中带不透明度的径向渐变

PHP中带不透明度的径向渐变,php,graphics,imagemagick,gdlib,Php,Graphics,Imagemagick,Gdlib,我需要创建一个不透明度的PNG径向渐变。我已经浏览了GDLib,但我看不到生成径向渐变的方法。有人知道使用GDlib或任何其他PHP图形库的方法吗 我想在最坏的情况下,我可以使用GDLib逐像素地生成它,但人们是如何开始计算的呢 目标是为网页生成性感的灯光效果背景PNG。该效果的一个示例可以在使用的屏幕上看到。我尝试过普通的白光效果PNG,但它看起来没有着色效果好,所以我生成的PNG会考虑网站的配色方案 我认为服务器端是一个不错的选择,因为浏览器对的支持非常零散。经典的视频游戏技巧是应用渐变纹理

我需要创建一个不透明度的PNG径向渐变。我已经浏览了GDLib,但我看不到生成径向渐变的方法。有人知道使用GDlib或任何其他PHP图形库的方法吗

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

目标是为网页生成性感的灯光效果背景PNG。该效果的一个示例可以在使用的屏幕上看到。我尝试过普通的白光效果PNG,但它看起来没有着色效果好,所以我生成的PNG会考虑网站的配色方案


我认为服务器端是一个不错的选择,因为浏览器对的支持非常零散。

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

在较大的像素尺寸(通常是2048px的正方形)上进行灰度渐变,并选择几个较小的(1024512256px等)根据需要选择最接近的灰度渐变(放大可能会放大条纹,缩小可能会引入莫尔)


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

为什么不结合使用and或

编辑:

请看我的意思的一个例子。您应该能够扩展它以支持alpha

Edit2:

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

我想我能产生的最坏情况 它使用GDLib逐像素显示,但如何使用 有人甚至开始做数学了吗 那个


数学很简单,
alpha=max\u alpha-(到中心/半径的距离)
其中距离是欧几里德的,即
sqrt((x1-x2)^2+(y1-y2)^2)

GD是一个快速且肮脏的图像操纵器。简单的操作是游戏的名称。放射状手术是先进的,不适合GD。你可以试试Gimp,它有一个完整的脚本接口,可以绑定大多数语言(虽然显然不是PHP)。它将在没有X的linux web服务器上执行-我不知道我在运行Gimp方面会有多成功Gimp有一个命令行“批处理”模式,所以它可以无头运行。听起来不错,但我想应用渐变纹理作为动态纯色的不透明度贴图(如果这是一个短语的话)…啊。我认为您需要设置alpha通道,然后使用gd单独设置像素,但同样,您可以采样或指定页面背景颜色,将渐变复制到图像上,即纯色,然后将结果复制到所需图像上。显然不是真正的alpha通道解决方案。这很有趣。它迭代增加颜色,然后绘制一系列逐渐变小的填充椭圆。但是,我不清楚是否可以在alpha通道上绘制椭圆:gd函数似乎使用RGB通道隐式(?)@horatio我正在测试aib的数学,通过使用
imagecolorallocatealpha()
创建127个相同颜色的不同不透明度,然后使用这些不透明度渲染像素。我想同心
imagefilledelipse()
I得到的是菱形渐变,而不是圆形。我把它搞砸了吗?它需要更多π和sin/cos吗?我的数学不是很好,如果你能给我指出正确的方向那就太好了。代码的其余部分完成了\o/就像老笑话说的那样:圆周率,蛋糕的平方。@Tak:你错过了平方根吗?这里,让我更明确一点。不,即使没有sqrt,你也应该得到一个圆。你错过广场了吗?