有力を書き換えるためのコード、より良いです
ダイレクトコピーを使用します
名前空間:
使用 System.Drawingを。
コード:
/// <要約> /// ピクチャ(百の除去エッジ)トリミング /// </要約> /// <PARAM NAME = "ファイルパス"> </ PARAM> パブリック 静的ビットマップCutImageWhitePart(文字ファイルパス) { ビットマップBMPを = 新しい新しいビットマップ(ファイルパス); //は右と左に int型トップ= 0、=左0、= bmp.Width右、下= bmp.Height; // (0)右へ、左からトップレチクルを見つけます(0)次の ための(int型 I = 0 ; Iはbmp.Heightを<Iは++)// 行 { BOOL =見つける偽。 用(INT J = 0 ; J <bmp.Width; J ++)// 列 { 色C = bmp.GetPixel(j、i)に対して、 もし(!IsWhite(C)) { トップ = I; 見つけ = 真; 破ります; } } もし(見つける) 休憩を; } // (トップ位置)から下へ左端レチクルを、検索は、左から右に するために(int型 I = 0 ; Iはbmp.Widthを<; Iは++)// 行 { BOOL検索= falseに、 のために(int型 J =トップ; J <bmp.Height; J ++)// 行 { 色C = bmp.GetPixel(I、J); IF(!iswhite(C)) { 左 = I; 検索 =trueに; BREAK ; } } IF (検索) BREAK ; } // 左から右へ、下から上にマーキング最下層を、見つける ために(int型 I = bmp.Height - 1。 ; I> = 0 ; i--)// 行が { BOOL =探すfalseに、 のために(INT J =左; J <bmp.Width; J ++)// 行 { カラーC =bmp.GetPixel(J、I); IF(!iswhite(C)) { 下 = I; 検索 = trueに、 BREAK ; } } IF (検索) BREAKを; } // 下に最も右マーキング、トップを見つけます、右から左に するために(int型私は= bmp.Widthを- 1。 ; I> = 0 ; i--)// 列 { BOOL検索=falseに; のため(int型 J = 0 ; J <=下; J ++)// 行 { 色C = bmp.GetPixel(I、J); IF(!iswhite(C)) { 右 = I; 検索 = trueに、 BREAK ; } } IF (検索) BREAK ; } // 部分ビットマップオブジェクトをクローニングします。 = RectangleのCloneRect 新しい新しい Rectangleの(左、上、右-左、下- トップ); ビットマップcloneBitmap = bmp.Clone(cloneRect、bmp.PixelFormat); bmp.Dispose(); // cloneBitmap.Save(@「D:\ 123.png」、ImageFormat.Png); 戻りcloneBitmapを; } /// <まとめ> /// 純粋な白と透明色(公差10ポイント)か否かを判断する /// </要約> パブリック 静的 BOOLのiswhite(色C) { // 純白はRGBは純粋で、透明であり、白255 IF(CA < 10 ||(CR> 245 && CG> 245&& CB> 245 )) を返す 真。 返す 偽; }
コール:
ビットマップビットマップ= CutImageWhitePart(@ " C:\ Users \ユーザーのPing \デスクトップ\の2.png " ); bitmap.Save(@ " D:\ 123.png "、ImageFormat.Png)。
私は疑問を持って、971 931 543までお問い合わせください