• ベストアンサー

phpのGDで画像の特定色だけを他の色に塗りつぶし

一応環境です centos5.5 apache 2.2.3 php 5.3.3 phpのGDで画像の特定色だけを他の色に塗りつぶすことはできるでしょうか? 例えば、白(R:255 G:255 B:255)の部分だけをすべて他の色に変更する。といったことがしたいのですが、GDでは難しいでしょうか?

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

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

  • ベストアンサー
  • kashi1031
  • ベストアンサー率100% (2/2)
回答No.1

自己解決しました。 下記のソースで1ピクセルずつ確認して塗りつぶしできました。 (画像の白をちょっとだけグレイにする) -------------------------------------------- $whitegray=imagecolorallocate($img_new, 254, 254, 254); for ($x=0;$x<$newwidth;$x++){ for ($y=0;$y<$newheight;$y++){ $rgb=imagecolorat($img_new,$x,$y); $r = ($rgb>>16)& 0xFF; $g = ($rgb>>8)& 0xFF; $b = $rgb & 0xFF; //var_dump($r,$g,$b); if(($r==255)&($g==255)&($b==255)){ imagesetpixel($img_new,$x,$y,$whitegray); } } } --------------------------------------------

関連するQ&A

  • PHPでGD(画像処理)を使うには、どうしたら良いんでしょうか?

    すいません、現在私は、PHP4.3.10を利用しているんですが、 この環境でGD(画像処理)を使いたいんですが、GDを使うにはどうしたら良いんでしょうか?

    • ベストアンサー
    • PHP
  • gdを用いた画像生成

    ・php4.3.11 ・gd2.0.33 上記の環境で作成しているのですが、画像の透過処理にて行き詰っていまして、imagecreatefromgifで読み込んだ 不透過gifの一部の色を透過色にしたいのですが、なにかよい方法はありますでしょうか。 ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • windowsxpでphpがGDを認識しない

    windowsのローカルホストでPHPにGDをインストールしたのですが、phpでGDを認識していないようです。 php自体は問題なく動いています。winddowsフォルダーのphp.iniのextensionに extension=php_gd2.dll とコメントアウトを外して extension_dir = C:/php/extensions/ とphp_gd2.dllはエキステンションディレクトリーで指定した部分にきちんと入っています。 <?php phpinfo(); ?> で、確認してみると、GDが認識されていません。 心当たりがある方いらっしゃいましたら、回答ください お待ちしています。 以下の環境です PHP のバージョン = 4.4.7 Web サーバー = Apache/1.3.39 (Win32) HTTP ホスト = localhost PHP O/S = WINNT

    • ベストアンサー
    • 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
  • xamppでGDを使いたい。

    PHPのGDを使用したいです。 xamppインストール直後の設定ではphp.info()でgdの項目がありません。設定を確認したところ、問題ないと思うのですが他に見落としている項目がありましたら教えてほしいです。 以下確認した手順です。 I.「php.ini」ファイル (1)extension_dir = "C:\xampp\php\ext\"  デフォルトでコメントが外されていました。  指定されているフォルダの中にphp_gd2.dllの存在を確認。 (2)extension=php_gd2.dll  デフォルトでコメントが外されていました。 II.php-switch.batを起動してPHPのヴァージョンが5になっていることを確認。 III.PHP設定確認後、一応Apacheの再起動実施。 IV.phpinfo()を見ても確認できず。

    • ベストアンサー
    • PHP
  • GDの画像変換でサーバーに負荷

    phpで画像処理するのにGDを利用しています。 しかしアクセスが増えるとすぐにapacheの負荷が上がってしまいLoad Averageが一気に増えてしまいます。 主に携帯サイトで使っていますが、負荷を下げるにはどのような手段がありますか? 試しにAPCを入れてみたのですがいまいちでした。 よろしくお願い致します。

    • ベストアンサー
    • 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
  • 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
  • phpのバージョンアップが反映されない

    phpのバージョンアップを行い, php -vで確認したところ php 5.2.14からphp 5.3.4になっていました. しかし <?php phpinfo(); ?> で確認したところ php 5.2.14のままでした. apacheの再起動をしてみたのですが,反映されません. 環境: centOS+apache+php よろしくお願いします

  • PHPでのフォルダ作成について

    始めて質問させていただきます。 今、PHPの勉強をしているのですが PHPでのフォルダー作成について困っています。 環境は 1. WindowsXP + IIS + PHP5.3.2 2.CentOS5.5 + Apache2.2.3+PHP5.1.6(テスト用に下記URLを参考に構築) http://centos.server-manual.com/ 今まで、1の環境にて開発をしていて問題なく動いていたのですが より本番に近い環境でと思い、2の環境を作り1のファイルをアップロードしました。 Apache自体は動いていて、HPの表示はされているのですが PHPで mkdir の処理が動かず(FALSEが帰ってくる)フォルダーの作成が出来ない状態でいます。 もちろん1の環境では問題なく動いていて、フォルダ作成も出来ていました。 2へアップロードした際は、ドメイン名等の定数のみの変更で、その他のソースは変えていません。 httpd.conf の設定の問題でしょうか? httpd.conf の User と Group は "apache" になっています。 ユーザー "apache "の権限でしょうか? 色々調べては見たのですが、どうも分からず質問させていただきました。 以上、設定内容等なにか情報が足りなければ、ご指示いただければ載せます。 よろしくおねがいします。

専門家に質問してみよう