[PHP-users 9648] GD関数をもちいて減色処理をしたい。
Yoshitake Shinohara
php-users@php.gr.jp
Sat, 31 Aug 2002 17:31:34 +0900 (JST)
よしたけ@YYNです。
GD関数を用いて色数を指定した色数に減色を行いたいのですが、次の通り、
imagetruecolortopalette()関数を用いて色数指定を行っても機能しません。
function
imageconv($image_data,$conv_fmt,$conv_hsize,$conv_wsize,$conv_color,$s)
{
$im = ImageCreateFromString ($image_data);
$conv_im=imagecreatetruecolor($conv_wsize,$conv_hsize);
imagecopyresampled($conv_im,$im,0,0,0,0,$conv_wsize,$conv_hsize,$wsi
ze,$hsize);
imagetruecolortopalette($conv_im,TRUE,65535);
echo imagecolorstotal($conv_im);
ob_start();
switch ($conv_fmt) {
case "GIF":
ImageGIF($conv_im);
break;
case "PNG":
ImagePng($conv_im);
break;
case "JPG":
ImageJpeg($conv_im);
break;
}
$data=ob_get_contents();
ob_end_clean();
// return $data;
}
結果:256
65535に指定しましたが、8でも16でも2でも出力結果は256になります。
ちなみに、imagetruecolortopalette()関数をコメントアウトすると、結果は
0になります。(これはカラーパレットが無いからと判断して良いんですよね?)
また、echoをはずして、ImagePng($conv_im);にて出力させても、色数指定にか
ぎらず同じ画像が出力されます。
#変に減色されているので、画質が落ちてます。元データは256色なので、変な色
#になるはずが無いのですが(^^;
環境は、Debian/Woody, PHP 4.1.2, GD 2.0.1 with GIF patchです。
他にGD関数を使用して良い方法がございましたらば、教えていただければと思います。
pearのImageMagic関数を使った方が良いのでしょうか...
データをDBから受け取るため、ImageMagic関数だと一旦ファイルに書く必要があるのが
許せなくって(^^;
------------------------
YYN partnership company
Yoshitake Shinohara
yoshi@yyn.jp