C#Netは白のボーダーの写真を削除します

有力を書き換えるためのコード、より良いです

ダイレクトコピーを使用します

名前空間:

使用 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までお問い合わせください

おすすめ

転載: www.cnblogs.com/ping9719/p/11416176.html