PHPで画像ファイルから色情報を抽出する方法

このQ&Aのポイント
  • 画像ファイルから色情報を抽出する方法について悩んでいます。
  • 指定した画像ファイルを入力として、画像の各座標に対する色情報を取得したいです。
  • 一般のレンタルサーバで実現可能な方法を探しています。
回答を見る
  • ベストアンサー

PHPで画像ファイルから色情報を抽出

画像ファイルから色情報を抽出する方法に悩んでいます。 指定した画像ファイル(JPG等)を入力として、 その画像ファイルで使用されている色情報を 画像の縦横に対応した2次元配列などで取得したいと考えています。 (たとえば、10px×10pxの画像であれば、  X=1、Y=1~X=10、Y=10までの色情報(#ffffff等)を抽出したい) 以下のサイトの技術を用いることで、 画像ファイルに使用されている色情報を抜き取ることができるようですが、 使われている色の回数ではなく、画像の各座標に対する色情報を取得したいのです。 http://phpspot.org/blog/archives/2006/09/php_61.html 画像ファイルを入力して、特定座標値の色情報を抜き取るには どのようにすればよろしいのでしょうか。 (一般のレンタルサーバで実現可能が方法を探しています) よろしくお願いします。

  • mmei
  • お礼率74% (120/161)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

回答がないようなので...。 GD 2.0以上が入っていれば使えると思います。 // レンサバによっては入ってないかも。phpinfo()とかで調べてください。 <?php $im = imagecreatefromjpeg("sample.jpg"); $w = imagesx($im); // 横幅 $h = imagesy($im); // 縦幅 $colArray = array(); // 縦横を1ピクセルずつループ for($y = 0; $y < $h; $y++){ for($x = 0; $x < $w; $x++){ // カラーインデックス取得 $rgb = imagecolorat($im, $x, $y); // 赤 $r = ($rgb >> 16) & 0xFF; // 緑 $g = ($rgb >> 8) & 0xFF; // 青 $b = $rgb & 0xFF; // カラーコード生成し配列に入れる $colArray[$y][$x] = "#".str_repeat("0",2-strlen(dechex($r))).dechex($r). str_repeat("0",2-strlen(dechex($g))).dechex($g). str_repeat("0",2-strlen(dechex($b))).dechex($b); } } print_r($colArray); ?>

mmei
質問者

お礼

早々のご回答ありがとうございます。 サンプルプログラムも付けて頂いて大変ありがたいです。 必要な要素と実現方法が理解できました。

関連するQ&A

  • フォトショップファイル中の画像の座標情報を書き出してくれる機能?

    たとえば (1)レイヤー1のx:3.0、y:4.0の座標に画像が 1つ配置されている (2)レイヤー2のx:10.0、y:8.0の座標に画像が 1つ配置されている という状態があったとします。 これらの座標の情報をファイルか何かに書き出して くれる機能がないのか?と探しています。 「レイヤー1,x:3.0,y:4.0」、 「レイヤー2,x:10.0,y:8.0」みたいな形で。 レイヤーが何十もあるファイルから、修正が あるたびにいちいち目視でそれぞれの画像の 座標位置を拾わなくてはならず、たいへん苦労 しています。 何か良い知恵があったらおしえてください。 よろしくお願いいたします。

  • C#で、画像の、指定した座標の色情報を取得し

    C#、Visual Studio2008を使用しています。 ピクチャーボックスに画像を読み込み、その画像の、指定した座標の色情報を取得したいです(RGB値)。 画像の読み込みまではできました。 その次の指定した座標の色情報を取得するようなメソッド?コマンド?は存在するのでしょうか? 検索しても出てこないため、ご存知でしたら教えていただけると助かります。よろしくお願いします。

  • 抽出した特徴点の座標を取得したいのですが…

    OpenCVの特徴点を抽出するサンプルプログラム http://opencv.jp/sample/gradient_edge_corner.html#goodfeaturesを使用して, 特徴点の座標をx,y座標として取得したいと思っているのですが, 関数cvFindCornerSubPix()の2番目の引数cornersに, 「コーナーの初期座標が入力され,高精度化された座標が出力される」 とあったので,出力してみたところ,5~6桁の数字がズラーッと表示されました. この数字が高精度化された座標なのでしょうが, 特徴点座標をx,y座標として取得する方法はないのでしょうか? ご存知の方がいらっしゃれば,ご教授いただけると幸いです. よろしくお願いいたします.

  • 特定範囲内に一部でも属す線分を抽出する方法

    現在MySQLにてシステムの構築を考えていますが、 SQLの組み立てについて壁に当たったので、質問させて頂きます。 線分の座標を表す以下のようなテーブルが存在するとします。 線分テーブル「tblLine」 項目:  開始X座標[SX],  開始Y座標[SY],  終了X座標[EX],  終了Y座標[EY] このテーブルから任意の座標点(PX,PY)に 近い線分を抽出しようと考えております。 具体的には、上記座標点のX座標、Y座標を プラスマイナス10して出来る以下の4点 (PX-10,PY-10) (PX+10,PY-10) (PX-10,PY+10) (PX+10,PY+10) からなる四角形に、線分の一部でも属すものを すべて抽出できればと考えています。 線分の一部でも属すもので、考えられるパターンは (1)線分すべてが四角形に含まれる。 (2)線分の開始点or終了点のどちらかが四角形に含まれる。 (3)線分の開始点or終了点を除く一部が四角形に含まれる。 になると思います。 (1)、(2)については、開始点と終了点の座標のどちらかが PX-10~PX+10とPY-10~PY+10の条件を満たすものとして 抽出すればよい為、SQLを組み立てるのは難しくないですが、 (3)についてはどのようにSQLを組み立てればよいのかが わかりません。 ちなみに、範囲を四角形にしたのは、 SQLを簡素に、重くならないように考えてのことです。 円(点からの距離)のが簡単or速いということであれば その方法をご教授願いたいです。 ご回答、またはアドバイスをよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • FORTRAN でBMP画像の値の取得

    FORTRAN でBMP画像の値の取得をしたいのですが,どうすればいいでしょう? たとえば,10×10画素の8bitのbmp画像の各ピクセルの値を読んで,テキストに書き出したいとします. ですので,できるファイルは・・ 1,1,255 1,2,255 ・ ・ ・ みたいに,X座標,Y座標,そこの値 っていうふうにしたいんです. わからないのは,BMP画像の値の取得方法です. また,bmpを読み込んで,その情報を元にまたbmpを作る時はどうすればいいでしょう? 長々とすいません.

  • RTFファイルから画像抽出

    環境 WinXP SP2 VC++ 6.0 rtfファイルに含まれる画像を抽出するプログラムを考えています。 rtfファイルをテキストエディタで開くと以下の記述があり、 {\pict\wmetafile8\picwgoal9420\pichgoal7065 含まれている画像がメタファイル形式であること、 画像の寸法がわかりました。 rtfファイルに含まれている情報から画像ファイルに 変換するために必要な情報をご存知の方 いらっしゃいましたらご教授いただけませんでしょうか。 特に、使用するAPI、参考HP等を希望いたします。 よろしくお願いいたします。

  • 画像のpx値(X座標、Y座標)を知る方法

    画像でpx値(X座標、Y座標)を知る方法を教えて下さい。 ソフトは、Illustrator10、PhotShop7.0があります。

  • PhotoShop で画像の情報を取得

    添付させて頂きました画像の四角で囲んである X座標とY座標・Width情報とHeight情報をエクセルファイルに記載して行っているのですが 現在一つ一つ手作業で記載を進めています。 レイヤーが50個近くあり これを一つ一つ手作業で記載をして行くとすごい時間がかかってしまいそうなのですが 何か一括で出力できる方法などありませんでしょうか? photoshopに詳しい方、またはプログラムに詳しい方?いましたらご教授お願い致します。

  • 画像処理アルゴリズム

    いちおうC#でやってますが、あくまで考え方、概念、アルゴリズムの回答で構いません 今取りあえず、ある画像の全ピクセルのRGBとHSVデータを配列として持っているとします 色情報[x,y][R]に赤 色情報[x,y][G]に緑 色情報[x,y][B]に青 同様に HSV[x,y][H]にH HSV[x,y][S]にS HSV[x,y][V]にV ここから、配列をfor文で回してもなんでもいいんですが、画像の色情報を取得して 1.単色刷り画像の取得(白、黒、ある色のみで高声された画像、閾値でふるい分け) (黒白赤,黒白薄緑とか) を実現するためにどうすればいいでしょうか? (全部の色を混ぜてその色の彩度で判定・・・しらたちょっと予想と違う検索結果に・・・)

  • Illustratorで、画像から色を抽出する方法

    Illustratorでは、bmpなどの画像を張り付けることが出来ますが、 埋め込んだ、或いはリンク付けした画像からRGBの色情報を抽出することは出来ないのでしょうか? いつもはphotoshopを立ち上げて、スポイトツールで読み取っているのですが、 Illustrator内で同じ操作をしたいと考えております。 よろしくお願い致します。

専門家に質問してみよう