2013-07-10 101 views
8

我想弄清楚如何將color image轉換爲數字。用PHP將圖像轉換爲數字?

例如,如果我有一個像figure (b)中顯示的圖像,我怎麼能得到一個輸出如figure (a)在一個文本文件?

enter image description here

+0

現在你所談論的灰度圖像,如果你想這樣做,以彩色圖像的每個像素將不得不從0 3號到255(紅:0-255,綠色:0-255,藍:0-255) –

+2

http://php.net/manual/en/function.imagecolorat.php如果你給谷歌一個嘗試,它可以輕鬆地用「php圖像讀取像素顏色」來搜索 – zerkms

+0

你可以分享實際的圖像我們? –

回答

2

我把什麼是here其中邁赫迪Karamosly在他的回答中提到,並修改它的一些是有點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

@類,這是一個很好的解釋。但是這不會將彩色圖像轉換爲數字。你能告訴我們如何將彩色圖像轉換爲數字嗎? –

+0

@NewGuy我已經添加了一個如何獲得顏色數字,這會給你'r,g,b',如果你想要其他格式的數字,你可以在SO上搜索。 – Class

2

現在你所談論的灰度圖像,如果你想這樣做,以彩色圖像的每個像素將不得不從0 3號到255(紅:0-255,綠:0 255,藍:0-255)

如果你有興趣的灰度圖像,你需要知道一個重要的規則是:

//像素是灰度如果R = B = G

根據此post

看看這個PHP函數:

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