KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > GDを利用してテキストを画像に変換

GDを利用してテキストを画像に変換

テキストをimgに変換するにはGDライブラリを利用すれば できるようなのでちょいと試してみました。

とりあえずググってみると、とてもわかりやすいサンプルが 沢山出てくるので基本はなんとなくわかるのですが 使いやすくしようとするととたんに問題発生。

header()を利用しないとダメっぽいので img出力前にhtml描画ができないという罠。

streamでどうにかできないか試しましたが 全然できそうもなかったのでタグ出力する機能と イメージ生成する機能で分離することにしました。

header()無しでできる方法ないんでしょうか・・・

ImgHeadliner プロトタイプ

その名のとおりとりあえず動くってレベルで試作です。もっといい方法ありそうな気もするので。

クライアントコード

スクリプト読み込み

PHP
  1.  <?php
  2.  require_once("init.php");
  3.  ?>

フォーマット

PHP
  1.  <?php
  2.  $img->view("StyleKey.Tag.Text");
  3.  ?>

出力コード

PHP
  1.  <?php
  2.  <Tag><span>Text</span><img src="img.php?key=md5" alt="Text" /></Tag>
  3.  ?>

見出しを想定してるのでテキストあった方がいい気がするので spanで囲んであります。CSSでdisplay:noneとかで消すとよいとおもいます。

サンプル

PHP
  1.  <?php
  2.  $img->view("Style1.h1.ImgHeadliner プロトタイプ");
  3.  $img->view("Style2.h2.ImgHeadliner プロトタイプ");
  4.  $img->view("Style3.h3.ImgHeadliner プロトタイプ");
  5.  $img->view("Style4.h4.ImgHeadliner プロトタイプ");
  6.  $img->view("Style5.h5.ImgHeadliner プロトタイプ");
  7.  $img->view("Style6.h6.ImgHeadliner プロトタイプ");
  8.  ?>

サンプル実行結果

どんなスタイルが設定してあるかはImgHeadlinerStyles.phpを参照ください。

アルファが利用できるpngを利用するとアンチエイリアスが微妙なことになります。 背景色とalphaを調整することで少しはマシになります。(Style1とStyle2)

構成ファイル

ImgHeadlinerStyles.php

ここに記述したStyleKeyを利用します。

ImgHeadlinerAPI.php

出力コードを変更したい場合こちらのview()を変更。

ImgHeadliner.php

クライアントから受け取った文字列から 出力に必要な情報を集めてシリアライズして保存します。

CreateHeadLinerImg.php

出力されたkeyから保存されたオブジェクトを探して それを元に出力します。

data/

シリアライズデータを置きます。読み書き可能にしてください。

font/

確認できるようIPAフォントを同梱してます。 licence.txtをお読みになってご利用ください。

動作環境

PHP 5.x とGDライブラリが入ってれば動くかと思います。 PHP 5.2.6(lolipop)では確認できました。

ダウンロード

ImgHeadliner.zip

トラックバック(1)

2009年4月 3日 12:06

テキストを動的に画像にする仕組み情報備忘録

テキストを動的に画像にする仕組みで参考になりそうなのがあったのでメモ続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。

2012
01.21

[PHP]共有サーバーユーザーのためのPEARインストール方法

共有サーバーでは自由にPEARのパッケージがインストールできないので、 プロジェクトローカルに設置することになりますが、以前httpベースのものを使ってみたんですけど、 やたら重くて使い物にならなかったので、僕は普通にFTPでアップするようにしてます。

ってことでプロジェクトローカルへのPEARのインストール方法。