برنامه اي ميخوام بنويسم كه يه سري عكسو رو برام سياه و سفيد كنه اما هيچ چيزي به نظرم نميرسه
ممنون ميشم اگه كمكم كنيد؟
برنامه اي ميخوام بنويسم كه يه سري عكسو رو برام سياه و سفيد كنه اما هيچ چيزي به نظرم نميرسه
ممنون ميشم اگه كمكم كنيد؟
سلام دوست عزیز
برای انجام اینکار باید از 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");
اطلاعات بیشتر :
I've just started tweeting!
@Alireza_Maddah
اين سورس براي فايلهايي با پسوند Gif جواب نميده ؟
I've just started tweeting!
@Alireza_Maddah
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
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);
}