PHP5.5 で増えた gd functions

まだ実際に動くかあまり試してないので、マニュアルや gd の実装を鵜呑みにして書いてます。

  • 増えた function 一覧

imagepalettetotruecolor
imageflip
imagecrop, imagecropauto
imageaffine, imageaffinematrixget, imageaffinematrixconcat
imagescale
imagesetinterpolation

imagepalettetotruecolor

GD の画像リソース(内部データ)はパレット形式とトゥルーカラーのモードがあって、imagetruecolortopalette は前からありましたが、追加されたのはパレットからトゥルーカラーに変換する機能です。これは欲しかった。。

imageflip

画像の上下、左右、又はその両方を逆転するメソッドです。

imagecrop, imagecropauto

画像の特定領域を抜き出して、新規の画像オブジェクトを作成するメソッドです。
imagecropauto が凄そうで、閾値の引数があるので、特定の色を境にクリップとか出来そうです。

imageaffine, imageaffinematrixget, imageaffinematrixconcat

imageaffine は imagecrop から更にアフィン変換をかけて取り出すメソッド
imageaffinematrixconcat は変換行列の乗算です。
ここまで出来れば、もう簡単なアバターエンジンが作れるんじゃないかしら。

imagescale

補間アルゴリズム指定でリサイズが出来るメソッド。
今まで BILINER (+α?)決め打ちで画質が悪いと定評のあった GD のリサイズ処理ですが、NEAREST_NEIGHBOUR 指定すれば ImageMagick とサムネ画像生成で良い勝負をしそうです。
# GIF アニメ出力に対応してないのが惜しいところで。

imagesetinterpolation

補間アルゴリズムを指定するメソッドです。

補間方法を設定します。
これは、 imagerotate() など GD のさまざまな関数のレンダリングに影響を及ぼします。

とあり、libgd を見ると、 im->interpolation に代入してて、この値を参照する箇所に影響します。
例えば、imagescale でも引数で未定義な値を入れると gdImageScaleTwoPass 越しで影響するようです。(バグみたいな動きだけど、実際どうなるんだこれ。)
他の関数への影響は調査中。