- ベストアンサー
GDによるグラデーション
GDによるグラデーション画像の作成方法が分からず、悩んでおります。 一応、基本は2色のグラデーションを考えています。 imagefilledpolygonで塗りつぶしたあと、for関数+imagecoloratを使用してセル単位で配色を行う方法がある、と検索したらあったのですが、具体的なコードがなかったので理解できずにいます。 出来れば、上記のグラデーションを実現できる一連の流れを教えていただけませんでしょうか。 また、ご存知ならGDについて詳しく書かれたPHPの本をご存知でしたら教えていただきたいと思っています。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 赤から青のようなグラデーションを作るのに、どうすればいいかがわからず悩んでいたところでした 黒白を例にしましたが RGB のそれぞれの数値を変化させれば色々な色が作れるのでそれを 段階的に変化させるという意味でした。 > この方法はすでに試しておりまして 同時に RGB 全ての数値を同じように変えてしまうと明暗の階調にしかなりません。 > PHPのマニュアルは基本ですので、参考にしております それでしたら、赤から青のグラデーションも理屈がわかれば可能でしょう。 これは PHP そのものではありませんが、数値を段階的に変化させるという理屈の説明が わかると思います。 RGBを使った簡単なグラデーション http://koji.chu.jp/stepupXgradXrgb.html # くどいことを書きますが気分を害すつもりはありません。 このサイトで述べられているカウンタというのは、変数を徐々に変化させると言う意味で PHP であれば、変数を for 文を使って変化させることです。 上下左右のグラデーションであれば imagerectangle を使って色調の段階で座標を計算して 描画すればよろしいかと思います。
その他の回答 (1)
- x415f484f
- ベストアンサー率71% (57/80)
※ 殆んどアドバイスにもなってませんが…… > 基本は2色のグラデーション グラデーションの基の色が黒から白の二色だとすると、黒から白へ徐々に色が変化していきます。 黒の R,G,B 値が 0,0,0、白が 255,255,255 ということはこの数値を変化させれば良いと考えられ ませんでしょうか? ※ グラデーションに黒と白とかのセンスの有無はこの際、お気になさらないように。 > 具体的なコードがなかったので理解できずにいます。 PHP のマニュアルはご覧になれてますでしょうか? グラデーションではないですが、色を変化させるという意味ではなにかのヒントになると思います。 PHP: imagefilledarc - Manual http://jp2.php.net/manual/ja/function.imagefilledarc.php#77090 > User Contributed Notes > imagefilledarc > Mike > 15-Aug-2007 04:43 (この下がソース) この Mike さんという方のソースをコピーしてあなたのサーバにアップロードして表示させてみてください。 無事に動くと何が見えるでしょうか? あなたのパソコンにテスト環境が構築されているのなら良いのですが、もしレンタルサーバであれば高負荷に ならない程度に更新してソースと比べながらご覧下さい。 書籍は知りませんので下記の URL から辿っていろいろなサンプルを動かしてみてください。 (他のコードから呼び出す関数だけのサンプルのもありますので何も出ないことがあります) PHP: イメージ - Manual http://jp2.php.net/gd ここからいろいろな GD の関数が調べられます。 質問で仰られていた関数や引数などはこちら。 PHP: imagefilledpolygon - Manual http://jp2.php.net/manual/ja/function.imagefilledpolygon.php PHP: imagecolorat - Manual http://jp2.php.net/manual/ja/function.imagecolorat.php
補足
回答ありがとうございます ただ、この方法はすでに試しておりまして、明るさのグラデーションしか出来ないのであまり参考にしていませんでした 赤から青のようなグラデーションを作るのに、どうすればいいかがわからず悩んでいたところでした PHPのマニュアルは基本ですので、参考にしております
お礼
度々回答ありがとうございます リンク先の内容で理解しました なんとなく、こういう計算をしなければいけないような気もしていたのですが、もう少しスマートなコードがあるのではと思っていたのです ># くどいことを書きますが気分を害すつもりはありません。 いえいえとんでもないです 漠然としていた悩みがすっきりしました ありがとうございました