目次
- 自己紹介
- お仕事
- 自己セールス (発表の権威付け的な意味合いで)
- GD 概要
- 実例サンプル
- 応用サンプル
- バッドノウハウ(?)
- ここからが本題
自己紹介
- お仕事は画像システムのお守り。
- システムは主に ImageMagick を使うけど、画質検証や資料作成で GD を使う事が多いので今回はそっちのネタで。
ちょっぴりだけ仕事の話。(画像システムのお守りはやる事沢山あるんです) (社内チェック間に合わないので諦める)
GD 概要
PHP GD 拡張って何?
入出力フロー
入出力俯瞰図
- 画像ファイル、画像データと GD リソース(パレットとトゥルーカラー) 、操作、そして出力
- パレット形式、ダイレクトカラー形式
- PNG/JPEG/GIF の入出力
- PHP の変数(string型)からでも読める(形式を自動判別してくれるので便利)
- ピクセル単位の描画で画像を作成出来る。簡単な描画命令(line とか)もある。
使い方
- 何より、gd は標準の extension なので導入が楽。
- gd は標準の extension なので導入が楽。
- 最小サンプル (使い方が分かるように)
- Web で実行する場合は header と echo 。cli で画像ファイルを作るだけなら echo や file_put_contents で。
機能列挙
(サンプル)
- 画像リソース作成
- 画像ファイル入出力
- 画像情報取得
- ピクセル操作
- 描画命令
サンプル
実例サンプル
簡単なサンプル
- 画像ファイル形式変換 (PNG,GIF,JPEG相互変換)
- 簡単なフィルタ (赤味をつけるとか)
- 単色の画像を作成
- ランダムな画像を作成
(各々サンプル)
応用サンプル
画像ファイル入出力
- colorcount.php
- PHP で画像比較
- PHP で画像比較(2) 差分抽出
画像を一から作成
- ビットマップ画像フォーマット毎のテスト素材
- 画像ファイルのサイズ範囲
- 色の分布を3Dで表示するJavaScriptを改造
応用
- Dot 絵化 (アンチエイリアシング無しの拡大+α)
- PHP で 3D plot
限界というか弱点
- 透明度の段階が荒い。透明度が 0~127 でしかも逆方向。
- 16ビットカラーを扱えない。8bit のみ…
- めっちゃ重たい
時間があったら
- タイルとか fillStyle 的なの使える。但し、透明度と併用できない。
- 弱点克服のご提案 (俺々ビットマップ処理 extension)
- imagecopymerge でアバター画像合成は… 過去の記録が見つからない…
|