• ベストアンサー

PHP4+GDでの画像の減色処理

携帯で写真を見るときに自動的にリサイズして 表示するスクリプトを作成しています。 PHP+GDで画像の減色処理は可能でしょうか? 色数を32~64くらいまで減色する方法が解りません jpg書き出しの場合は比較的サイズが小さくなるので 問題はないのですがauの古い機種の場合にはpngを 書き出すようにしていますがファイルサイズが 大きくなってしまい表示しきれません。 よろしくお願いします

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • taba
  • ベストアンサー率61% (349/567)
回答No.1

imagetruecolortopaletteを使えばできそうですよ。 ただし、PHP 4.0.6とGD 2.0.1が必要みたいです。

参考URL:
http://www.php.net/manual/ja/function.imagetruecolortopalette.php

関連するQ&A

  • 画像 gif PNG の減色

    PNGファイルの色数を指定し、5色に減色したのですが、 16色に減色したときとファイルサイズが変わらないのはなぜでしょうか? 24bitから16色に減色したときはかなりファイルサイズは小さくなったのですが……

  • GDで画像表示

    GDのimagejpeg()などでJPGバイナリをブラウザに送信することができますが、<img scr= のような所に画像を表示できませんか? やりたいことは、xx.jpgを640,480にリサイズしてyy.phpが出力するHTMLタグの<img srcの部分に640,480のサイズで画像を表示することです。 xx.jpgはユーザが適当なサイズでアップロードする画像です。 640,480にリサイズした画像を保存してから<img srcで表示するなら、それは可能だということが分かりますが、メモリ上で解決したいと思っています。

    • ベストアンサー
    • PHP
  • 画像処理GD×

    はじめまして。 下記は入力された1つの画像を指定したサイズで一部をコピーし 分割しpng形式にしていくプログラムです。 GDを使って処理していたのですが… GD,imagemagick等は使わないで処理する条件にすることになってしまいました。 ↓↓処理 入力された画像のsizeを調べる---getimagesize getimagesizeで画像の種類を判断し if(gifだったら) { $imgOrg = imagecreatefromgif(入力された画像) } if(jpeg,pngだったら…) {…} $max横=画像size[0] / 256; $max縦=画像size[1] / 256; for($i<MAX横になるまで) { for($x<MAX縦になるまで) { $img = imagecreate(256,256); imagecopy($img, $imgOrg , 0 , 0 ,$i * 256, $x * 256, 256, 256); } $name = $i.$x."xxx.png"; imagepng($img, $name); //main処理 } こんな感じなのですが、これをGDを使わないでやると… imagecreatefrom[gif,jpeg,png] imagecopy imagepng を使う処理ができなくなり、 変わりの処理を1日調べたのですが GD等を使った例しかサイトに載ってなくて行き詰っています。 GDを使わずに変わりの処理でできるのか、それともできないのか 初心者なのでおかしいとこがあるかもしれませんがよろしくお願いします。

    • 締切済み
    • PHP
  • PHP+GDについて

    PHPでGDを用いてPNGファイルを生成するスクリプトを作成したのですが、うまく動作しません。 <?php $filename = "G".date("Ymdhis").".png"; $im = imagecreate(550, 250) or die ("画像の作成に失敗しました"); $bg = imagecolorallocate($im, 255,255,255); $trans = imagecolortransparent($im, $bg); imageline($im, 60,0,60,140, $trans); $filedir="graph_img/".$filename; imagepng ($im,$filedir); imagedestroy($im); echo "作成完了!"; ?> このスクリプトを実行すると、PNGファイルは生成されるんですが、ファイルサイズが0で、スクリプトの実行がそこで中断されてしまいます。 何かよい解決方法はないでしょうか?よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPによる画像処理

    PHPを使ってJPG形式の画像をPNG形式に変換しようとしていますが、画像が添付のスクリーンショットのようなものになってしまいます。 以下がPHPスクリプトです。 ちゃんとPNG形式の画像を表示させるにはどうしたらよいのでしょうか。 詳しい方、どうかご教授ください。お願いします。 <?php $fpath='pictures/DSCN1458.JPG'; $scimg=imagecreatefromjpeg(realpath($fpath)); $cpimg=imagecreatetruecolor(200,150); $cl=imagecolorallocate($cpimg,255,0,0); imagecopyresized($cpimg, $scimg, 0,0,0,0,imagesx($cpimg),imagesy($cpimg), imagesx($scimg),imagesy($scimg)); header('Content-type', 'image/png'); imagepng($cpimg); imagedestroy($scimg); imagedestroy($cpimg); ?> <html> <head><title>image transform</title></head> <body > </body> </html>

    • ベストアンサー
    • PHP
  • PHP GD 画像が縮小できない

    宜しくお願いします。 ※ローカル環境です。 (WinXP PHP5 Smarty PEAR MySQL ※GDはインストされています。) 下記のコードで、サーバーにもともと上げてある画像(jpeg)を縮小して、 それをブラウザに表示させようと思います。 ですが、縮小されずに、元の画像サイズのまま表示されてしまいます。 おかしな点をご指摘下さいませ。 また、(1)で、 jpegファイルを取り込むコードがありますが、これは、 もし画像がGIFであったりPNGの場合を顧慮するなら、 取り込む際にそれぞれを判定するのが基本でしょうか? もし、今回のようにサバー元の画像をリサイズするのであれば、拡張子もわかっていますので、 jpegファイルだけのことを考えればいいですが、 たとえば、任意のアップロードされたファイルを扱う場合は、上記3種類を判定すして処理すべきですよね? 以上、2点を回答下さいませ。 // -- (1) // 画像を読み込む。 $file_path = "http://www元画像.com/img/aa.jpg"; $image = ImageCreateFromJPEG($file_path); //JPEGファイルを読み込む /*********** $image = ImageCreateFromGIF($file_path); //GIFファイルを読み込む $image = ImageCreateFromPNG($file_path); //PNGファイルを読み込む ************/ // -- (2) // 画像のサイズを取得。 $width = ImageSX($image); //横幅(ピクセル) $height = ImageSY($image); //縦幅(ピクセル) // -- (3) // 縮小した画像のサイズを決める。 $new_width = 100; $rate = $new_width/$width; //圧縮比 $new_height = $rate*$height; // -- (4) // 空の画像を作成する。 $new_image = ImageCreateTrueColor($new_width, $new_height); // -- (5) // サンプリングしなおす  ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height); // -- (6) // ブラウザに出力する場合。 ImageJPEG($image); //ImageJPEG($image,'simpletext.jpg'); //ImageGIF($image); //環境によっては使えない //ImagePNG($image); // -- (7) // メモリを解放する。 imagedestroy ($new_image); imagedestroy ($image);

    • ベストアンサー
    • PHP
  • [PHP]GDを利用した画像リサイズについて

    [PHP]GDを利用した画像リサイズについて GDを利用した画像リサイズ処理を行うクラスを作ったのですが、 以下のようなエラー(文字化け)が出てしまい画像出力することができません。 有識者の方、どうか知恵をお貸しください。宜しくお願い致します。 ????JFIF??;CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), quality = 75 ??C    $.' ",#(7),01444'9=82<.342??C  2!!22222222222222222222222222222222222222222222222222??II"?? ???}!1AQa"q2???#B??R??$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????? ???w!1AQaq"2?B???? #3R?br? -------- 以下省略 ---------- ◆作成したPHPファイル ・test.php <?php require_once 'Image.php'; $path = './400x300.jpg'; $r = new Image($path, 75); $r->resize(75); ?> ・Images.php <?php class Image{ var $new_width; var $path; function Image($path, $new_width){ @header("Content-type: image/jpeg"); $this->path = $path; $this->new_width = $new_width; } function resize(){ global $new_width; global $path; // 画像パス $image = imagecreatefromjpeg($this->path); // 画像のサイズを取得 $width = 150; $height = 150; $rate = $this->new_width / $width; $new_height = $rate * $height; $thumb = imagecreatetruecolor($this->new_width, $new_height); imagecopyresized($thumb, $image, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); // imagecopyresampled($thumb, $image_path, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); imagejpeg($thumb, null, 75); imagedestroy($image); } } ?> ◆環境と状況 ・サーバ:WindowsXP(XAMPPを利用してローカル環境を構築) ・phpinfo()にて、GD Support=enabled、JPEG Support=enabledを確認 ・ステップ実行(デバック)にてimagejpeg($thumb, null, 75);まで問題なく実行可能。  ※imagejpeg($thumb, null, 75);実行後上記文字列が出力される。 ・コメントアウト個所のimagecopyresampledでも動作結果は同じ。 ・参考にしたサイト  http://goodjob.boy.jp/chirashinoura/id/79.html 恐れ入りますが、ご回答お願い致します。

    • ベストアンサー
    • PHP
  • PHPの画像処理

    PHP学習者です。 画像ディレクトリー内の画像をサイズを変えて表示するプログラムを作りましたが、JPG形式は表示されてもPNG形式やGIFが表示されません。 関係すると思われるコードの一部を掲載します。コードがおかしいのか、あるいは何かPNGのためにはしておくことがあるのか、詳しい方どうか教えてください。お願いします。 //*************************************************** public function getImage() // create thumbnail image to be sent to browser //*************************************************** { header("content-type:$this->mimetype"); switch($this->imageproperties[2]){ case IMAGETYPE_JPEG: imagejpeg($this->image,"",$this->quality); break; case IMAGETYPE_GIF: imagegif($this->image,""); break; case IMAGETYPE_PNG: imagepng($this->image,"", $this->quality); break; default: die("could not create image"); } // end case ; }

    • ベストアンサー
    • PHP
  • PHP GD 画像リサイズ

    PHP+GDで携帯サイト用の画像リサイズ処理させるプログラムを書籍のサンプルプログラムを元に作成していますが画像が表示されません。 GD:ver2.17 $image_data = @imagecreatefromjpeg($image_file); $output_image_data = @imagecreatetruecolor($output_image_x, $output_image_y); @imagecopyresampled($output_image_data, $image_data, 0, 0, 0, 0, $output_image_x, $output_image_y, $image_x, $image_y); header('Content-Type: image/jpeg'); @imagejpeg($output_image_data); @imagedestroy($image_data); @imagedestroy($output_image_data); 動作確認は携帯とPC両方でやってますが、携帯だと画像表示されず×が表示され、PCだと文字化けした文字が出力されます。 PCで所々デバック文を表示させたりして確認したところimagecopyresampled関数ではTRUEが返ってきておりましたが、imagejpeg関数以降のデバック文が表示しませんでした。 初心者なのでうまく説明できなくてすいません。 お手数ではございますがご教授お願いします。

    • ベストアンサー
    • PHP
  • GD の認識に関して

    PHP で GD の利用に関してアドバイスをください。 OpenPNE を設定し、プロフィールの画像(jpg)等をアップロードすると、ブラウザの画面が真っ白になり、画像(jpg)をアップロードすることが出来ません。他に日記でも画像(jpg)をアップロードしようとすると同じ現象で出来ません。少し調べた所、PHP から GD が認識されていない可能性があると思ってきました。 phpinfo を見てみても、gd の項目がありません。 サーバはさくらインターネットの FreeBSD を借りています。 サーバ内を確認した所 gd-2.0.33_4,1 jpeg-6b_4 png-1.2.8_3 php5-zlib-5.1.6_1 は入っています。 思うに、php,ini の設定かと思います。もしかしたら他に何かモジュールが必要なんでしょうか、何処を確認したら良いか、アドバイスを頂ければと思います。 PHP のバージョンは 5.16 です。 ちなみに、以下のページで同じ現象が発生しています。 http://docs.openpne.jp/?cmd=read&page=TROUBLE%2F96&word=%A5%A2%A5%C3%A5%D7%A5%ED%A1%BC%A5%C9

    • ベストアンサー
    • PHP

専門家に質問してみよう