2016-05-03 14 views
1

backgroundの画像をjpegから取り除くコードを書こうとしていますが、同じ形式で保存できます。ここで画像の白い背景を削除する白い部分がまだ残っています。C#

は、これまでの私のコードです:

string imgPath = Server.MapPath("~/App_Files/" + Profile.CompanyName + "/Temp/test.jpg"); 
Bitmap bmp = RADBase.ImageHandler.LoadImage(imgPath); 
bmp.MakeTransparent(Color.White); 
System.Drawing.Imaging.ImageFormat format = new System.Drawing.Imaging.ImageFormat(Guid.NewGuid()); 
bmp.Save(imgPath, format); 

それは、白い背景を削除しますが、画像上の白いエッジが残っています。完全な白い背景を削除する方法を確認していない?ここで

はイメージです。 http://cyphernet.co.za/bg-test/CGU3-black.jpg

はここでの結果です: http://cyphernet.co.za/bg-test/test.jpg

+1

ただ一つの白い色 'FFFFFF'(RGB値)を削除するだけですが、他の色も白く見え、RGB値は違っています。たとえば、' FFFFFE' – daniel59

+0

簡単には簡単ではありません。 Stack Overflowのスコープ...まだ、これらの質問+回答を参照してください:http://stackoverflow.com/questions/5875035/remove-white-edges-from-image-c-sharp and http://stackoverflow.com/questions/2898050/how-to-determine-edges-in-an-image-optimalに決定します。 –

+0

提案のおかげで@ Fuzzi59私はあなたのソリューションを試してみて、それがどうなるか見てみましょう。そこにあなたにフィードバックを与えます。 – CypherNet

答えて

0

一つの方法は、白色に見える色の範囲を作成して、それが「白」である場合、各ピクセルをチェックすることであろう。そして、あなたはColor.Transparentにこれらのピクセルを設定することができます。

string imgPath = Server.MapPath("~/App_Files/" + Profile.CompanyName + "/Temp/test.jpg"); 
Bitmap source = new Bitmap(imgPath); 
source.MakeTransparent(); 
for (int x = 0; x < source.Width; x++) 
{ 
    for (int y = 0; y < source.Height; y++) 
    { 
     Color currentColor = source.GetPixel(x, y); 
     if (currentColor.R >= 220 && currentColor.G >= 220 && currentColor.B >= 220) 
     { 
      source.SetPixel(x, y, Color.Transparent); 
     } 
    } 
} 
source.Save(imgPath); 

は難しいと言っているので、一つの色が白であるかどうか。これは、大まかなソリューションです。おそらく、より良い結果を得るために範囲を調整しなければならないかもしれません。 もう一つのポイントは、Tシャツの色が白く見えることもあるため、これらも透明になります。

+0

Fuzzi59、それは魅力のように動作します。感謝万円! – CypherNet

-1

あなたはすべての白cateforiesをきれいにする必要があり、あなたはリンクの下のカテゴリーを見ることができます。特にグレーとホワイトのカテゴリ(グレーカテゴリ=グリーカテゴリ、ホワイトカテゴリ=ベヤズカテゴリ)を見ることができます。 RBG値で色を削除することができます。

Here Categories

関連する問題