LeadTools中文入门教程(1):加载、显示和保存图像 点击进入
LeadTools中文入门教程(2):缩放图像 点击进入
LeadTools中文入门教程(3):打印图像 点击进入
LeadTools中文入门教程(4):使用OCR识别英文 点击进入
LeadTools中文入门教程(5):读取和编写条形码 点击进入
LeadTools中文入门教程(6):从TWAIN源获取图像 点击进入
LeadTools中文入门教程(7):使用OCR识别图像中的中文 点击进入
LeadTools中文入门教程(8):使用OCR识别扫描文件中的中文 点击进入
LeadTools图像处理开发工具,在医学、DICOM、PACS、栅格、矢量和多媒体图像处理领域都处于世界领先的地位。LeadTools包括Raster Imaging、Document Imaging、Medical Imaging和Multimedia Imaging四个产品系列。在图像处理应用程序中,加载、显示和保存图像是非常基本且重要的一部分,LeadTools对这方面提供了很好的支持。
本文概览:
1 使用LeadTools加载和保存图像简介
2 使用LeadTools将彩色图像保存为二值图像简介
3 使用LeadTools显示图像简介
4 创建LeadTools简单应用程序——“加载和显示图像”的具体步骤及截图
PART1 加载和保存图像
LeadTools在加载和保存图像时提供了很多选项。下面的简单代码即可实现加载LEAD压缩文件并将其保存为Windows BMP文件的功能。
1: C#
2:
3: //创建一个RasterCodecs类的新实例
4: Leadtools.Codecs.RasterCodecs codecs = new Leadtools.Codecs.RasterCodecs();
5: //以自身的每像素位数加载一个图像
6: Leadtools.RasterImage image = codecs.Load(
7: @"c:\Test.cmp",
8: 0,
9: Leadtools.Codecs.CodecsLoadByteOrder.Bgr,
10: 1,
11: 1);
12: // 将图像保存为24-位Windows BMP文件
13: codecs.Save(
14: image,
15: @"C:\Test.bmp",
16: Leadtools.RasterImageFormat.Bmp,
17: 24,
18: 1,
19: 1,
20: 1,
21: Leadtools.Codecs.CodecsSavePageMode.Overwrite);
22: //释放我们创建的对象
23: image.Dispose();
24: codecs.Dispose();
PART2 将彩色图像保存为二值图像
LeadTools可自动将彩色图像(高于1位/像素的图像)保存为二值图像(等于1位/像素的图像)。将RasterCodecs.Save方法的bitsPerPixel参数设为“1”即可完成此功能。当将图像的颜色分辨率降低到8位/像素或更低时,递色方法会发挥作用。另一个选择是您可以使用nearest-color匹配(不采用递色方法),这意味着每个像素的颜色会变为调色板上和它最匹配的颜色。如果原始图像包含微妙的色彩细节,nearest-color匹配可能会产生令人不愉快的颜色大斑点。
递色方法通过混合不同颜色的像素,创建了更多细微的图案阴影。这类似于报纸图片产生灰色阴影的方式,尽管实际的颜色只有黑色和白色。
若您使用v17,在将彩色图像保存为二值图像时,LeadTools默认不使用递色方法。这保证了最终的二值图像可以最清晰地表示原始文本,且为文档识别方法如OCR和条码提供了最好的输入。
若您想要启用递色方法,必须将Leadtools.RasterImage中的递色方法设为所需的值,并在保存图像时让Leadtools.Codecs.RasterCodecs使用这个值。
下面的代码片段为:加载一个24位/像素的图像并以递色和非递色方案将其保存为二值图像。
1: C#
2: private static void Test(RasterCodecs codecs, string coloredImageFileName)
3: {
4: // RasterCodecs.Options.Save.UseImageDithering方法默认为false
5: RasterImage image = codecs.Load(coloredImageFileName);
6: //以无递色选项保存图像
7: codecs.Save(image, @"C:\NotDithered.tif", RasterImageFormat.CcittGroup4, 1);
8: // 将图像递色方法修改为FloydStein
9: image.DitheringMethod = RasterDitheringMethod.FloydStein;
10: //在保存图像时使用图像递色方法
11: codecs.Options.Save.UseImageDitheringMethod = true;
12: // 再次保存图像
13: codecs.Save(image, @"C:\Dithered.tif", RasterImageFormat.CcittGroup4, 1);
14:
15: image.Dispose();
16: }
PART3 显示图像
LeadTools绘制图像的方法使用了四个矩形。分别为:**源矩形、目标矩形、源裁剪矩形和目标裁剪矩形。**前两者决定了显示图像时缩放的程度,后两者决定了图像的哪部分将被绘制。您可参考RasterImagePainter.Paint 方法更进一步了解这些矩形的使用。其他的绘制方法也使用了这些矩形,可以实现更多的功能,如过渡效果和区域处理。
默认情况下,LeadTools在加载图像时水平分辨率与垂直分辨率是相同的。但是,大多数传真图像的水平分辨率通常是垂直分辨率的二倍(如200×100),在加载时若不考虑分辨率就会被拉长。您可以在使用RasterImagePrinter显示图像时将Leadtools.WinForms.RasterImageViewer.UseDpi属性值设为true,这样在加载时便会将分辨率考虑在内,这个问题就轻松解决了。在打印时,若要考虑图像分辨率,需将Leadtools.WinForms.RasterImagePrinter.UseDpi属性设为true。在RasterImageList中,使用Leadtools.WinForms.RasterImageList.UseDpi属性可设置图像分辨率。
当以256色或更少的显示模式绘制图像时,您必须设置要使用的调色板。
当放大图像时,您可以放大显示矩形或缩小源矩形(这样可得到图像的一部分)。如果您通过缩小源矩形放大图像,则必须考虑图像的查看视角。
LeadTools在显示图像时提供了附加的选项,包括透明度、递色选项、偏黑选项、半色调、对比度、gamma、强度、窗位、绘制和过渡效果。
PART 4 创建“加载和显示图像”应用程序的具体步骤
了解了加载、显示和保存图像的一些简单介绍后,您一定非常期待使用LEADTOOLS在VS中完成一个简单的应用程序,让我们现在开始吧!
以下为加载和显示图像的具体步骤和操作截图:(注:此文截图为C#项目截图)
1. 打开Visual Studio .NET。
2. 点击 文件->新建->项目…。
3. 打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“Loading and Displaying an Image”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。
4. 在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。**根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 2.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” <LEADTOOLS_INSTALLDIR>\Bin\DotNet\Win32”,**选择以下的DLL“:
Leadtools.dll
Leadtools.Codecs.dll
Leadtools.WinForms.dll
Leadtools.Codecs.Cmp.dll
点击“确定”按钮,将以上所有的DLL添加到应用程序中。
5. 将Form1调整到设计视图,在工具箱(视图->工具箱)拖拽一个RasterImageViewer实例至窗体**。若您的工具箱没有RasterImageViewer,点击工具->选择工具箱项…。点击浏览从“<LEADTOOLS_INSTALLDIR>\Bin\DotNet\Win32”中选择Leadtools.WinForms.DLL,点击打开并确定。6. 从工具箱(视图->工具箱),添加一个按钮控件,将Text属性改为“加载图片”。7. 切换至Form1的代码视图(右击Form1**,选择查看代码),将下面几行代码添加到文件开始处:
1: [C#]
2:
3: using Leadtools;
4: using Leadtools.Codecs;
5: using Leadtools.WinForms;
8. 添加Form1 Load事件的事件句柄,添加以下代码:
1: [C#]
2:
3: // 加载、保存图像的 RasterCodecs 对象
4: private RasterCodecs codecs;
5: private void Form1_Load(object sender, System.EventArgs e)
6: {
7: // 初始化一个新的RasterCodecs 对象
8: codecs = new RasterCodecs();
9: }
9. 在窗体中双击“加载图像”按钮,为此按钮添加一个事件句柄,添加以下代码:
1: [C#]
2:
3: private void button1_Click(object sender, System.EventArgs e)
4: {
5: //显示打开文件对话框
6: OpenFileDialog dlg = new OpenFileDialog();
7: dlg.Filter = "All Files|*.*";
8: if(dlg.ShowDialog(this) == DialogResult.OK)
9: {
10: try
11: {
12: // 尝试加载该文件
13: RasterImage tempImage = codecs.Load(dlg.FileName);
14:
15: // 将图像设置到查看器中
16: rasterImageViewer1.Image = tempImage;
17: Controls.Add(rasterImageViewer1);
18: rasterImageViewer1.BringToFront();
19: }
20: catch(Exception ex)
21: {
22: MessageBox.Show(this, ex.Message);
23: }
24: }
25: }
10. 编译并运行。结果如下图所示。
DEMO下载:
Loading and Displaying an Image.rar
本文只提供了加载、显示和保存图像的示例程序,如果你想对图像进行更多操作,欢迎下载LeadTools试用版,并在本文代码上进行修改。
若您在使用LeadTools的过程中遇到任何问题,欢迎在葡萄城开发者社区LeadTools板块提问,我们的专业技术团队期待您的到来!
关于葡萄城
葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。