2013-07-10 10 views
8

color imageをどのように数値に変換できるかを調べようとしています。イメージをPHPで数字に変換しますか?

たとえば、figure (b)のような画像がある場合、テキストファイルにfigure (a)のような出力を得るにはどうすればよいですか?

enter image description here

+0

今、あなたは赤(あなたは色のイメージにそれをしたい場合は、各ピクセルは0〜255の3つの数字を持っているでしょう、グレーレベルの画像について話している:0〜255、緑:0-255、青:0-255) –

+2

http://php.net/manual/en/function.imagecolorat.php googleに試してみたら、 "php image read pixel color"で簡単にグーグルグーグすることができます – zerkms

+0

実際の画像を共有できますか?米国? –

答えて

2

私はメフディKaramoslyが彼の答えで述べたhereにあったものを取り、いくつかは少しsimipilerなるように修正して、単純なHTML出力を作りましたあなたの好みの出力に変更することができます。セキュリティを追加しようとしている場合は、データチェックを追加してファイル/実イメージを確認することもできます。私は自分のコンピュータでそれをチェックして、うまくいけば、必要なものをいくつか修正してもうまくいくでしょう。

function graycolor($img){ 
    list($width, $height) = getimagesize($img); 
    $mime = pathinfo($img, PATHINFO_EXTENSION); 
    switch($mime){#use appropriate function depending on image type 
     case 'jpg': 
     case 'jpeg': 
      $im = imagecreatefromjpeg($img); 
      break; 
     case 'png': 
      $im = imagecreatefrompng($img); 
      break; 
     case 'gif': 
      $im = imagecreatefromgif($img); 
      break; 
     default: 
      #invalid type 
      exit; 
    } 
    if(!is_color($img, $im)){#$img = string; $im = resource string 
     $ret = ""; 
     for($i = 0; $i < $height; $i++){#loop height pixels 
      for($ii = 0; $ii < $width; $ii++){#loop width pixels 
       $color = imagecolorat($im, $ii, $i); 
       $color = imagecolorsforindex($im, $color); 
       $ret .= $color['red'] . " "; 
      } 
       $ret .= "\n"; 
     } 
     return $ret; 
    }else{ 
     #$ret = ""; 
     #for($i = 0; $i < $height; $i++){#loop height pixels 
      #for($ii = 0; $ii < $width; $ii++){#loop width pixels 
       #$color = imagecolorat($im, $ii, $i); 
       #$color = imagecolorsforindex($im, $color); 
       #$ret .= $color['red'] . ", " . $color['green'] . ", " . $color['blue'] . " "; 
      #} 
       #$ret .= "\n"; 
     #} 
     return "color image"; 
    } 

} 
function is_color($img, $im){ 
    $times = 10;#number of times to check image for color 
    $iscolor = false; 
    list($width, $height) = getimagesize($img); 
    for($i = 0 ; $i < $times && !$iscolor; $i++){ 
     $color = imagecolorat($im, rand(0, $width), rand(0, $height));#get random cords 
     $color = imagecolorsforindex($im, $color);#get the random color's values 
     if($color['red'] !== $color['green'] || $color['green'] !== $color['blue']){ 
      $iscolor = true; 
      break; 
     } 
    } 
    return $iscolor; 
} 

echo graycolor('color.jpg');#outputs color image 
echo graycolor('gray.jpg');#outputs numbers 
+0

詳細な例で私に説明してくれてありがとう。それは多くの助けとなりました。 –

+0

@Classそれは良い説明です。これはカラー画像を数字に変換しません。カラー画像を番号に変換する方法も教えてください。 –

+0

@NewGuy私はあなたに 'r、g、b'を与える色番号を取得する方法を追加しました。あなたは他の形式で番号を望むなら、SOの方法で検索できます。 – Class

2

今、あなたは、グレーレベルの画像について話している、あなたは色のイメージにそれをしたい場合は、各ピクセルは0から255までの3つの数字を持っています(赤:0〜255、緑:0- 255、青:0-255)

あなたは、グレースケール画像に興味があるなら、あなたが知っておく必要があるだろう一つの重要なルールは次のとおりです。

// R = B = G

場合、ピクセルがグレースケールであります
012この数値に基づいて

がこのpostに基づいています。

このPHP関数を見てみましょう:

http://php.net/manual/en/function.imagecolorat.php

関連する問題