您的位置首页生活百科

LeadTools创建“调整亮度和对比度”程序步骤

LeadTools创建“调整亮度和对比度”程序步骤

的有关信息介绍如下:

LeadTools创建“调整亮度和对比度”程序步骤

LeadTools 是 NET,Win API,WinRT,Linux,iOS,OS X,Android & HTML5平台下领先世界的图像处理开发工具包,它在调整图像对比度和亮度方面提供了多种方法,除了基本的亮度和对比度调整方法外,还有基于直方图的对比度方法。

打开Visual Studio .NET。点击 文件->新建->项目…。打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“ChangeBrightnessAndContrast”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。

在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” \Bin\DotNet4\Win32”,选择以下的DLL“:

Leadtools.dll

Leadtools.Codecs.dll

Leadtools.Codecs.Cmp.dll

Leadtools.ImageProcessing.Color.dll

Leadtools.WinForms.dll

从工具箱(视图->工具箱),添加8个RadioButton控件(将RadioButton的Text属性依照下表修改),两个Panel控件(Name分别修改为panelBefore和panelAfter)。如下图:

切换至Form1的代码视图(右击Form1,选择查看代码),将下面几行代码添加到文件开始处:

1: using Leadtools;

2: using Leadtools.Codecs;

3: using Leadtools.WinForms;

4: using Leadtools.ImageProcessing.Color;

将以下变量添加至Form1类:

1: private RasterImageViewer beforePic;

2: private RasterImageViewer afterPic;

3: private RasterCodecs codecs;

4: private RasterImage temp;

添加Form1 Load事件句柄,在其中添加以下代码:

1: beforePic = new RasterImageViewer();

2: beforePic.BackColor = Color.DarkCyan;

3: beforePic.Dock = DockStyle.Fill;

4: beforePic.InteractiveMode = RasterViewerInteractiveMode.Pan;

5: beforePic.HorizontalAlignMode = RasterPaintAlignMode.Center;

6: beforePic.VerticalAlignMode = RasterPaintAlignMode.Center;

7: beforePic.AutoResetScaleFactor = false;

8: panelBefore.Controls.Add(beforePic);

9: beforePic.BringToFront();

10:

11: afterPic = new RasterImageViewer();

12: afterPic.BackColor = beforePic.BackColor;

13: afterPic.Dock = beforePic.Dock;

14: afterPic.InteractiveMode = beforePic.InteractiveMode;

15: afterPic.HorizontalAlignMode = beforePic.HorizontalAlignMode;

16: afterPic.VerticalAlignMode = beforePic.VerticalAlignMode;

17: afterPic.AutoResetScaleFactor = beforePic.AutoResetScaleFactor;

18: panelAfter.Controls.Add(afterPic);

19: afterPic.BringToFront();

20:

21: codecs = new RasterCodecs();

22: codecs.ThrowExceptionsOnInvalidImages = true;

23: beforePic.Image = codecs.Load(Path.Combine(Application.StartupPath, @"..\..\Pic\Image.jpg"));

双击radioButton1,在radioButton1 CheckedChanged事件句柄中添加以下代码:

(本段代码为ChangeIntensityCommand类的使用)

1: temp = beforePic.Image.Clone();

2: ChangeIntensityCommand command = new ChangeIntensityCommand();

3: command.Brightness = 250;

4: command.Run(temp);

5: codecs.Save(temp, Path.Combine(Application.StartupPath, @"..\..\Pic\ChangeIntensityCommandResult.jpg"), RasterImageFormat.Jpeg, 24);

6: afterPic.Image = temp;

双击radioButton2,在radioButton2 CheckedChanged事件句柄中添加以下代码:

(本段代码为ChangeContrastCommand类的使用)

1: temp = beforePic.Image.Clone();

2: ChangeContrastCommand command = new ChangeContrastCommand();

3:

4: command.Contrast = 250;

5: command.Run(temp);

6: afterPic.Image = temp;

双击radioButton3,在radioButton3 CheckedChanged事件句柄中添加以下代码:

(本段代码为GammaCorrectCommand类的使用)

1: temp = beforePic.Image.Clone();

2: GammaCorrectCommand command = new GammaCorrectCommand();

3:

4: command.Gamma = 250;

5: command.Run(temp);

6: afterPic.Image = temp;

双击radioButton4,在radioButton4 CheckedChanged事件句柄中添加以下代码:

(本段代码为MultiplyCommand类的使用)

1: temp = beforePic.Image.Clone();

2: MultiplyCommand command = new MultiplyCommand();

3: command.Factor = 151;

4:

5: command.Run(temp);

6: afterPic.Image = temp;

双击radioButton5,在radioButton5 CheckedChanged事件句柄中添加以下代码:

(本段代码为ColorIntensityBalanceCommand类的使用)

1: temp = beforePic.Image.Clone();

2: ColorIntensityBalanceCommand command = new ColorIntensityBalanceCommand();

3: ColorIntensityBalanceCommandData Shadows = new ColorIntensityBalanceCommandData();

4: ColorIntensityBalanceCommandData MidTone = new ColorIntensityBalanceCommandData();

5: ColorIntensityBalanceCommandData HighLight = new ColorIntensityBalanceCommandData();

6:

7: Shadows.Red = 60;

8: Shadows.Blue = 0;

9: Shadows.Green = 0;

10:

11: MidTone.Red = 40;

12: MidTone.Blue = 0;

13: MidTone.Green = 0;

14:

15: HighLight.Red = 70;

16: HighLight.Blue = 0;

17: HighLight.Green = 0;

18:

19: command.Shadows = Shadows;

20: command.MidTone = MidTone;

21: command.HighLight = HighLight;

22: command.Luminance = false;

23:

24: command.Run(temp);

25: afterPic.Image = temp;

双击radioButton6,在radioButton6 CheckedChanged事件句柄中添加以下代码:

(本段代码为ContrastBrightnessIntensityCommand类的使用)

1: temp = beforePic.Image.Clone();

2: ContrastBrightnessIntensityCommand command = new ContrastBrightnessIntensityCommand();

3: command.Contrast = -146;

4: command.Brightness = 358;

5: command.Intensity = 240;

6: command.Run(temp);

7: afterPic.Image = temp;

双击radioButton7,在radioButton7 CheckedChanged事件句柄中添加以下代码:

(本段代码为AddWeightedCommand类的使用)

1: temp = beforePic.Image.Clone();

2: AddWeightedCommand command = new AddWeightedCommand();

3: command.Type = AddWeightedCommandType.Average;

4: command.Factor = new int;

5: command.Factor = 100;

6: command.Factor = 100;

7: command.Factor = 100;

8: command.Factor = 100;

9: command.Run(temp);

10: afterPic.Image = temp;

双击radioButton8,在radioButton8 CheckedChanged事件句柄中添加以下代码:

(本段代码为ChangeHueSaturationIntensityCommand类的使用)

1: temp = beforePic.Image.Clone();

2: ChangeHueSaturationIntensityCommand command = new ChangeHueSaturationIntensityCommand();

3: ChangeHueSaturationIntensityCommandData[] data = new ChangeHueSaturationIntensityCommandData;

4: data = new ChangeHueSaturationIntensityCommandData();

5: data.Hue = 18000;

6: data.Saturation = 0;

7: data.Intensity = 0;

8: data.OuterLow = 315;

9: data.OuterHigh = 45;

10: data.InnerLow = 345;

11: data.InnerHigh = 15;

12: command.Data = data;

13: command.Hue = 0;

14: command.Saturation = 0;

15: command.Intensity = 0;

16:

17: command.Run(temp);

18: afterPic.Image = temp;

编译运行程序,本DEMO使用了10个类对图像的对比度和亮度进行调整,截图如下: