2011-08-11 12 views
2

私は白黒を持っていますSystem.Drawing.Bitmap画像に合わせて必要なだけ大きくなるように自動トリミングする必要があります。この画像は常に左上(0,0)の位置から始まりますが、どのくらいの高さと幅が必要なのか分かりません。それをサイズに自動トリミングする方法があれば?c#画像を自動トリミングする

+0

画像は空白領域に含まれていますか?白または透明なピクセル? –

+0

@GiladNaama - それは白です。 – Justin808

+2

umm ...非常に効率的かどうかは分かりませんが、白い(最後から最初の)ピクセルの最後の行を検索し、その番号を取得します。列と同じです。 –

答えて

1

次は、私が使用するコードです:

// Figure out the final size 
    int maxX = 0; 
    int maxY = 0; 
    for (int x = 0; x < bitmap.Width; x++) 
    { 
     for (int y = 0; y < bitmap.Height; y++) 
     { 
      System.Drawing.Color c = bitmap.GetPixel(x, y); 
      System.Drawing.Color w = System.Drawing.Color.White; 
      if (c.R != w.R || c.G != w.G || c.B != w.B) 
      { 
       if (x > maxX) 
        maxX = x; 
       if (y > maxY) 
        maxY = y; 
      } 
     } 
    } 
    maxX += 2; 
+0

私はあなたの画像のデータを知らないが、あなたの画像を二等分することによってスピードを上げることができ、白の値がないかどうかをチェックすることで、どちらの半分を二等分するかを知ることができるように感じる。 O(w * h)ではなくO((log h)*(log w))の最悪ケース時間を達成できるかもしれません。 –

+0

閉じた図形ではうまくいくと思いますが、空白でないピクセルが2つしかない画像はおそらくありません。ああ、画像に応じて検討する価値がある。 –

関連する問題