[PHP-users 14715]GDのimagerotate()が変?

原田 jdn @ po.synapse.ne.jp
2003年 4月 17日 (木) 17:24:32 JST


原田@JDNと申します。

PHP-4.3.1でimagerotate()を使用しているのですが、
同じ画像を90度と270度の回転をすると思った結果が違います。

例えば100 X 200のJPEG画像を270度回転すると
200 X 100のJEPG画像に変換されるのですが、
90度回転すると100 X 200はそのままです。
つまり、回転した画像の端が切れてしまいます。

そこで ext/gd/libgd/gd.c を見てみると
gdImageRotate270()では

  if (src->trueColor) {
    dst = gdImageCreateTrueColor (src->sy, src->sx);
    f = gdImageGetTrueColorPixel;
  } else {
    dst = gdImageCreate (src->sy, src->sx);
    f = gdImageGetPixel;
  }

となっているのに対して gdImageRotate90()では
  if (src->trueColor) {
    dst = gdImageCreateTrueColor ( src->sx,src->sy);
                                   ^^^^^^^^^^^^^^^^^ここの部分
    f = gdImageGetTrueColorPixel;
  } else {
    dst = gdImageCreate (src->sx, src->sy);
                         ^^^^^^^^^^^^^^^^ここの部分も
    f = gdImageGetPixel;
  }
と、gdImageCreateTrueColor (またはgdImageCreate)の引数が
元の画像のサイズをそのまま引き継いでいます。

これはバグでしょうか?それとも意図的にこの様な作りになっているのでしょうか
?
もし意図的におこなわれているのなら90度でも縦横のサイズまで回転させるとした
ら
270度回転した後に180度回転させなければならず、ちょっと面倒だなと思います。

_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>

    原田 <jdn @ po.synapse.ne.jp>

_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>_>


PHP-users メーリングリストの案内