3

不透明度のある PNG 放射状グラデーションを作成する必要があります。GDLib を調べましたが、放射状グラデーションを生成する方法がわかりません。GDlib またはその他の PHP 用グラフィックス ライブラリを使用する方法を知っている人はいますか?

最悪の場合、GDLib を使用してピクセルごとに生成できると思いますが、どうすればその計算を開始できますか?

目標は、Web ページのセクシーな照明効果の背景 PNG を生成することです。効果の例は、この背景画像を使用するヘッダーで見ることができます。一般的な白色照明効果の PNG を試してみましたが、着色照明ほど見栄えが良くないため、生成された PNG は Web サイトの配色を考慮します。

CSS 放射状グラデーションに対するブラウザーのサポートは非​​常に不安定であるため、サーバー側が最適な方法であると思います。

4

3 に答える 3

1

imagecolorallocatealpha()imageellipse()またはimagefilledellipse( ) を組み合わせて使用​​しないのはなぜですか?

編集:

私が言いたいことの例については、このクラスを参照してください。アルファをサポートするためにこれを拡張できるはずです。

編集2:

アルファ版をサポートするために、上記のクラスにいくつかの変更を加えました。完璧ではありませんが、楕円などで機能します。

http://codepad.org/1eZ3Km0J

于 2011-07-07T19:03:35.240 に答える
1

古典的なビデオ ゲームのトリックは、光を計算するのではなく、グラデーション テクスチャを適用することです。これはテクニックの完璧な使い方です。

大きなピクセル寸法 (2048px の正方形が一般的) でグレースケール グラデーションを作成し、いくつかの小さなもの (1024,512,256px など) を必要に応じて最も近いものを選択します (スケールアップするとバンディングが誇張され、スケールダウンするとモアレが発生する可能性があります)。

などのphp gd関数を使用しimagecopymergeます。意図に応じて、最初の使用時に結果を保存できます。

于 2011-07-07T18:58:53.320 に答える
1

最悪の場合、GDLib を使用してピクセルごとに生成できると思いますが、どうすればその計算を開始できますか?

alpha = max_alpha - (distance_to_center / radius)距離がユークリッド、つまりsqrt( (x1-x2)^2 + (y1-y2)^2 ).

于 2011-07-07T19:16:18.997 に答える