LeadTools中文入门教程(1):加载、显示和保存图像

发布时间:2014/08/29 00:08 发布者:Linda

返回博客中心

 

  • LeadTools中文入门教程(1):加载、显示和保存图像 点击进入
  • LeadTools中文入门教程(2):缩放图像 点击进入
  • LeadTools中文入门教程(3):打印图像 点击进入
  • LeadTools中文入门教程(4):使用OCR识别英文 点击进入
  • LeadTools中文入门教程(5):读取和编写条形码 点击进入
  • LeadTools中文入门教程(6):从TWAIN源获取图像 点击进入
  • LeadTools中文入门教程(7):使用OCR识别图像中的中文 点击进入
  • LeadTools中文入门教程(8):使用OCR识别扫描文件中的中文 点击进入 

LeadTools图像处理开发工具,在医学DICOMPACS、栅格、矢量多媒体图像处理领域都处于世界领先的地位。LeadTools包括Raster ImagingDocument ImagingMedical ImagingMultimedia 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属性改为“加载图片”。

4

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. 编译并运行。结果如下图所示。

6

7

DEMO下载:

本文只提供了加载、显示和保存图像的示例程序,如果你想对图像进行更多操作,欢迎下载LeadTools试用版,并在本文代码上进行修改。

 

LeadTools试用版下载

了解LeadTools产品更多特性

若您在使用LeadTools的过程中遇到任何问题,欢迎在葡萄城开发者社区LeadTools板块提问,我们的专业技术团队期待您的到来!

点击查看更多LeadTools使用教程、博文


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网