2016-10-06 18 views
-2

可能アップロードされた画像を確認できるasp.netアプリケーションを作成する白黒領域%?アップロードされた画像を確認する白黒領域%

例:画像をアップロード enter image description here

ユーザ後、アプリケーションは、黒と白の面積を計算します。

出力:

**ホワイト:** 32%

ブラック**:** 68%

+2

間違いなく可能です。どこに問題がありますか? –

答えて

1

あなたはBitmapクラスを使用することができます。 WidthHeightのプロパティでは、総ピクセル数を計算できます。 GetPixelメソッドでは、特定のピクセルの色を取得できます。 Color.Whiteのような既知の色を他の色と比較するには、ToArgbメソッドを使用します。

Image yourImage = ... 

Bitmap bitmap = new Bitmap(yourImage); 
int whiteColorCount = 0; 
int blackColorCount = 0; 
for (int i = 0; i < bitmap.Width; i++) 
{ 
    for (int c = 0; c < bitmap.Height; c++) 
    { 
     int pixelHexColor = bitmap.GetPixel(i, c).ToArgb(); 
     if (pixelHexColor == Color.White.ToArgb()) 
     { 
      whiteColorCount++; 
     } 
     else if (pixelHexColor == Color.Black.ToArgb()) 
     { 
      blackColorCount++; 
     } 
    } 
} 

long totalPixelCount = bitmap.Width * bitmap.Height; 
double whitePixelPercent = whiteColorCount/(totalPixelCount/100.0); 
double blackPixelPercent = blackColorCount/(totalPixelCount/100.0); 
double otherPixelPercent = 100.0 - whitePixelPercent - blackPixelPercent; 
+0

イメージyourImage = Image.FromFile(FileUploadControl.FileName); ただし、このエラーが発生します。System.IO.FileNotFoundException:test.png – KyLim

+2

@ KyLim例外の名前はわかりやすいです。ファイルの正しいパスを指していますか?たぶんあなたは 'MapPath'を見逃しているので、コードはどこを見るかを知っています。 –

0

はい、画像をビットマップに変換してこの方法を使用できます。それはあなたの設定された色のピクセル数を返します。黒と白のピクセルの数を取得し、黒と白の何パーセントを計算します。

// Return the number of matching pixels. 
private int CountPxl(Bitmap bmap, Color yourColor) 
{ 
// Loop through the pixels. 
int matches = 0; 
for (int y = 0; y < bmap.Height; y++) 
{ 
for (int x = 0; x < bmap.Width; x++) 
{ 
if (bmap.GetPixel(x, y) == yourColor) matches++; 
} 
} 
return matches; 
}