2013-03-09 59 views
1

我想用0和1將圖像轉換成多維數組。 圖像將是:有沒有辦法將圖像轉換爲0和1的多維數組

enter image description here

我wan't該圖像存儲到與「黑」被存儲爲1和「白」被存儲爲0陣列中的陣列。該陣列是8行6列:

int[,] imgArray = new int[8,6]; 

有沒有辦法在C#來實現這一目標?

+0

什麼格式的圖像是? (位圖?) – 2013-03-09 21:51:25

+0

圖像是'png'格式。不是位圖,但是,我可以使用位圖格式。我只是通過@Lukazoid測試下面的代碼,通過在photoshop中自己創建一個6 * 8位圖,但它似乎並沒有變成黑色,因爲imgArray中的所有內容都被插入爲0. – Sujal 2013-03-10 12:14:37

回答

3

如果您使用的是Bitmap,你可以填充該數組像這樣:

var bitmap = new Bitmap(@"C:\MyImage.png"); 
var imgArray = new int[bitmap.Width,bitmap.Height]; 
var blackArgb = Color.Black.ToArgb(); 
var whiteArgb = Color.White.ToArgb(); 
for (var i = 0; i < bitmap.Width; ++i) 
{ 
    for (var j = 0; j < bitmap.Height; ++j) 
    { 
     var pixelCol = bitmap.GetPixel(i, j); 
     if (pixelCol.ToArgb() == blackArgb) 
     { 
      imgArray[i, j] = 1; 
     } 
     else if (pixelCol.ToArgb() == whiteArgb) 
     { 
      imgArray[i, j] = 0; 
     } 
     else 
      throw new InvalidOperationException("Pixel color must be black or white"); 
    } 
} 
+0

我測試了代碼並嘗試顯示顯示輸出中的imgArray: System.Diagnostics.Debug.WriteLine(「Element({0},{1})= {2}」,i,j,imgArray [i,j]); 輸出顯示一個 'System.InvalidOperationException' 和陣列的內容被顯示0的 元素(0,0)= 0 元素(0,1)= 0 元素(0,2)= 0 元素(0 ,3)= 0 元素(0,4)= 0 .... – Sujal 2013-03-10 11:02:41

+0

無效操作異常消息是否與我的代碼中的消息匹配?我也修復了一些我有的編碼錯誤。 – Lukazoid 2013-03-10 12:53:00

+0

@Sujal嘗試我的新更新答案。您必須比較ARGB值而不是Color實例。嘗試使用MSPaint的PNG圖像進行測試。 – Lukazoid 2013-03-10 13:00:11

相關問題