کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.
کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.

سیاه و سفید کردن عکس با C#

سلا مدوستان عزیز! امروز در ادامه این پست و این پست می خواهیم کد سیاه و سفید کردن عکس را برایتان بگذاریم. توجه کنید که این نوع سیاه و سفید کردن با چیزی که همه ما از سیاه کردن می شناسیم که در واقع ترکیبی از خاکستری های گوناگون است متفاوت است. در این آموزش پیکسل های عکس هر کدام یا کاملاً سفید و یا کاملاً سیاه می شوند.

 

 

توابع زیر کار های ما را انجام می دهند.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
        public Bitmap BlackWhite(Bitmap photo, int Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if(col<128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }
        public Bitmap BlackWhite(string path, int Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Bitmap photo = new Bitmap(path);
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if (col < 128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }
        public Bitmap BlackWhite(Bitmap photo, decimal Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if (col < 128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }
        public Bitmap BlackWhite(string path, decimal Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Bitmap photo = new Bitmap(path);
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if (col < 128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }
        public Bitmap BlackWhite(Bitmap photo, double Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if (col < 128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }
        public Bitmap BlackWhite(string path, double Mode = 1/*Mode 1=Red, 2=Green, 3=>blue*/)
        {
            Bitmap photo = new Bitmap(path);
            Color color;
            byte col;
            for (int i = 0; i < photo.Width; i++)
            {
                for (int j = 0; j < photo.Height; j++)
                {
                    color = photo.GetPixel(i, j);
                    if (Mode == 1)
                        col = color.R;
                    else if (Mode == 2)
                        col = color.G;
                    else
                        col = color.B;
                    if (col < 128)
                        photo.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    else
                        photo.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                }
            }
            return photo;
        }

خط 10، 12 و 14 چک می کنند که مود وارد شده کدام یک از اعداد 1، 2 و یا 3 و بیشتر است و اگر 1 بود(در حالت پیش فرض اینگونه است) متغیر col را برابر مقدار قرمزی پیکسل قرار می دهد(خط 11) اگر 2 بود متغیر col را برابر مقدار سبز موجود در آن پیکسل قرار می دهد(خط 13) و در صورتی که نه 1 بود نه 2 مقدار آبی را در متغیر col می ریزد(خط 15). حال خط 16 تا 19 چک می کند که مقدار موجود در col از 128 کمتر است یا خیر و اگر کمتر بود مقدار سفید(0,0,0) را برای آن قرار می دهد و در غیر این صورت آن را برابر سیاه (255,255,255) قرار می دهد.

فکر نمی کنم نیاز به توضیحی دیگر باشد. برای توضیحات بیشتر می توانید به دو پست زیرمراجعه کنید یا در قسمت نظرات سؤال خود را بپرسید.

نگاتیو کردن عکس

تقویت رنگ عکس

تا دیگر کد خداحافظ

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد