PDA

View Full Version : سوال: سياه و سفيد كردن عكس



danial82
شنبه 21 اردیبهشت 1387, 09:41 صبح
برنامه اي ميخوام بنويسم كه يه سري عكسو رو برام سياه و سفيد كنه اما هيچ چيزي به نظرم نميرسه
ممنون ميشم اگه كمكم كنيد؟

علیرضا مداح
شنبه 21 اردیبهشت 1387, 10:25 صبح
سلام دوست عزیز
برای انجام اینکار باید از GDI+ و کلاس Bitmap و متدهای LockBits و UnlockBits و کلاس BitmapData استفاده نمایید :


Bitmap b = (Bitmap)Bitmap.FromFile("D:\\colorful.jpg");
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
unsafe
{
byte* p = (byte*)(void*)Scan0;
int nOffset = stride - b.Width * 3;
byte red, green, blue;
for (int y = 0; y < b.Height; ++y)
{
for (int x = 0; x < b.Width; ++x)
{
blue = p[0];
green = p[1];
red = p[2];
p[0] = p[1] = p[2] = (byte)(.299 * red
+ .587 * green
+ .114 * blue);
p += 3;
}
p += nOffset;
}
}
b.Save("d:\\gray.jpg");

اطلاعات بیشتر :

سلام دوست عزیز




CodeProject ....

Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel Filters (http://www.codeproject.com/KB/GDI-plus/csharpgraphicfilters11.aspx)
Image Processing for Dummies with C# and GDI+ Part 2 - Convolution Filters (http://www.codeproject.com/KB/GDI-plus/csharpfilters.aspx)
Image Processing for Dummies with C# and GDI+ Part 3 - Edge Detection Filters (http://www.codeproject.com/KB/GDI-plus/edge_detection.aspx)
Image Processing for Dummies with C# and GDI+ Part 4 - Bilinear Filters and Resizing (http://www.codeproject.com/KB/GDI-plus/imageprocessing4.aspx)
Image Processing for Dummies with C# and GDI+ Part 5 - Displacement filters, including swirl (http://www.codeproject.com/KB/GDI-plus/displacementfilters.aspx)
Image Processing for Dummies with C# and GDI+ Part 6 - The HSL color space (http://www.codeproject.com/KB/GDI-plus/HSLColorSpace.aspx)
Image Processing Lab in C# (http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx)

danial82
شنبه 21 اردیبهشت 1387, 11:45 صبح
اين سورس براي فايلهايي با پسوند Gif جواب نميده ؟

علیرضا مداح
شنبه 21 اردیبهشت 1387, 13:49 عصر
How to save a .gif file with a new color table by using Visual C# (http://support.microsoft.com/kb/319061)

Mahdi.Kiani
شنبه 21 اردیبهشت 1387, 16:08 عصر
برنامه اي ميخوام بنويسم كه يه سري عكسو رو برام سياه و سفيد كنه اما هيچ چيزي به نظرم نميرسه
ممنون ميشم اگه كمكم كنيد؟

http://barnamenevis.org/forum/showpost.php?p=471151&postcount=81

امین2008
سه شنبه 24 اردیبهشت 1387, 21:38 عصر
for(int x=0;x<bitmap.width;++x)
for(int y=0;y<bitmap.hight;++y)
{
color c=Bitmap.getpix(x,y)
float m;
m=c.R+c.B+c.G;
m=m/3;
color c2=color.Argb(m,m,m);
Bitmap.setpixel(x,y,c2);
}