ピッタリな解答には500pt差し上げます。


redhat上にてphpでGDライブラリを使いフォント画像の出力をやっています。通常の出力は簡単にできるのですが、いわゆるネオングローのような効果をだすにはどうしたらよいのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2006/06/26 16:49:00
  • 終了:2006/06/27 09:28:36

回答(1件)

id:wizemperor No.1

wizemperor回答回数379ベストアンサー獲得回数522006/06/27 03:58:23

ポイント500pt

ネオングローというのがどういったものなのかと、バージョン等がわからないのですが、下記のようなものでよろしいでしょうか。

http://forum.nifty.com/fworld/psp/testyard/logo/neon_1.htm

PHP5であればimageconvolution関数で画像にかなりの種類のエフェクトをかけられます。

imageconvolution

http://jp2.php.net/manual/ja/function.imageconvolution.php


まず、フォント(背景色=ぼやけている部分の色)のみの画像($myImage)を作成し、下記のようなフィルタをかけます。

$Matrix = array(-1, -1, -1, -1, 1, -1, -1, -1, -1);

$divisor = -7;

$offset = 0;

imageconvolution($myImage, $Matrix, $divisor, $offset);

するとぼやけた文字の画像($myImage)ができあがるので、この上からフォント(前景色)を上書きするとネオングロー風のフォント画像ができあがります。

ぼかしが足りなければ、imageconvolution関数を複数回かけるのが簡単かと思います。

これはフィルタマトリックスを使用したエフェクト関数ですが、その他にも色々なエフェクトがかけられます。詳しくは画像処理関係の書籍等を参考にしてみてください。

PHP4等でimageconvolution関数が使えない場合には下記の関数でぼかしフィルターをかけられます。

http://www.hudzilla.org/php/11_2_25.php

imageconvolution関数の代わりにこの関数でフォント画像(背景色)をぼかし、通常のフォント(前景色)を上書きすると同様な効果が得られます。

縁取り等をしたい場合には、(x-1,y-1)、(x-1,y)、(x+1,y+1)、(x+1,y)…というように描画位置をずらしながらフォント画像を作成したあとに、手前にくるフォントを上書きします。

エフェクトをかけたフォント画像を作成するには、基本的にはこうやって重ね合わせていくことになるかと思います。

  • id:tommyt
    回答ありがとうございます。
    ネオングローは提示されたものでOKです。

    質問してからアレコレ考えていましたがやはりこういうやり方になりますよね。
    私の環境ではimageconvolution関数が使えませんので同等の事をimagefilter関数にて行っていました。
    (imageconvolutionってこういう場合に使うんですね。マニュアルみただけではなんじゃこりゃ?でした。)

    もうひとつ教えていただいたblur関数ですが、ちょっと処理速度がネックですね。。
    imagefilter関数でガウスぼかし2回かました感じの質感なのですが処理速度が私の環境では3倍くらいかかってしまいました。

    教えていただいたことを元にうまく画像の効果をつけることができました。
    ありがとうございます。
  • id:wizemperor
    imageconvolutionは3x3のマトリックスですが、ちょっとしたエフェクトでしたらこれでほとんど済んでしまうと思います。
    Web上でマトリックスの例がほとんど見つからなかったのですが、画像処理のアルゴリズム本なんかによくのっています。
    関数リファレンスにもありますが、エンボスやシャープ化、縁取り等々も簡単にできてしまいます。
    ただ、たしかに処理速度はネックですね…。

    ネオングローがこれでいいのか悩みましたが、イメージどおりだったようでよかったです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません