[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 メーリングリストの案内