使用LEADTOOLS通过右键单击实现转换任意图像格式:25天25个项目

发布时间:2016/12/27 00:12 发布者:Richard.Ma

返回博客中心

作为LEAD Technologies 25周年纪念的一部分,我们正在搞一个“25天收集25个项目来展示LEAD功能强度和易用性”的活动。今天要展示的项目来自于尼克的分享。

转换器对话框

clip_image001

上下文菜单

clip_image002

 

它是做什么的

该项目展示了如何使用LEADTOOLS第19版,通过右键单击来转换任何图像文件格式。

 

所使用的功能

· File Formats

· Common Dialogs

 

开发进程日志

大家好,我是尼克。我要创建一个外壳扩展来对图像文件进行转换。

据个人经验来看,之前所提到的、以将其转换为另一种格式为唯一目的的、如何在高端图像处理程序中打开文件这一问题,我已经妥善解决了。加载和关闭这些应用程序只是用来转换一个单一文件,但却是一个耗时的过程。之前,为实现命令行的自动转换,我也曾写过一些批处理脚本,而这是非常有用的,尤其是在一次转换多个图像时。但是,如果一次只需要转换一个图像的话,一个可以通过鼠标右键单击来执行这些选项的shell扩展程序才是最理想的。

使用LEADTOOLS编解码器,而不是直接使用.NET代码,这可以节省相当多的时间。此外,LEADTOOLS能够使超过150的图像文件格式非常简单地进行文件转换时,这会使我可以花更多的时间来关注上下文菜单。

我已经发现了一些有关如何实现上下文菜单方面的示例代码。原来,有相当多的事情我没有考虑到,但我应该能够以此为起点来完成最终的实现。

为插入使shell扩展程序与文件格式产生关联的注册表键值,我已经对代码进行了修改。为了解这些键值的结构如何而钻研注册表,这个过程有些繁琐,所以这花了我几个小时的时间才完成。

用CMP格式注册我的扩展,我已经通过这种方式实现了概念验证,所以,当右键单击Windows资源管理器上的任何CMP文件时,该 “LEADTOOLS转换”选项会作为一个条目出现。但是,菜单项不具有有关这一方面的功能。因此,我花了大约四个小时的时间实现了这一点。

现在,我不仅要按实际的逻辑来编码以处理被点击的菜单项,并要对概念验证加以延伸,以便将文件转换为PNG格式。对于这一点来说,我只需要用RasterCodecs.Load()方法来加载文件,然后用RasterCodecs.Save() 方法将其保存为一种新的格式:

Documentation: RasterCodecs.Load
Documentation: RasterCodecs.Save

我可以创建一个可以提供更多格式转换的自定义的图形用户界面。幸运的是,LEADTOOLS已经通过提供RasterSaveDialog帮我完成了外出搜集情况的这部分工作。我只需要创建该对话框以及伴随它的背景逻辑,这个部分我大约只写了六行代码,花了大约一个小时的时间,并使用了另一个DLL作为引用。

Documentation: RasterSaveDialog

在这一点上,程序第一次运行时,它将必需的密钥都集成到了这些文件类型的注册表中。在此之后,用鼠标右键单击一个该类型的文件, “LEADTOOLS转换”会显示在上下文菜单上。选择该选项,则会显示出“LEADTOOLS保存”对话框,您可以在该对话框中对输出格式、文件名和其他选项进行设置。

一个同事向我推荐了一个图标。我扩展了该程序,以便将注册表键值设置为指向要使用的默认图标文件。这一步完成以后,该更改开始产生作用,我追踪到了一张LEADTOOLS“三角”标志所使用的图像。然而,这却是一个JPG格式的图像。我只需要用右键点击它,从上下文菜单中选择了“LEADTOOLS转换”,并选择“Ico”作为输出格式,然后点击保存。因此,通过以上步骤很容易将其添加到项目中。

发掘一些示例,对其进行研究,并最终抛弃一个而实现另一个,这个过程可能花了我八个小时的时间,但结果是令人满意的。

本来,我的实现会涉及到加载将要作为RasterImage被转换成存储器,然后被保存为输出文件名和格式的文件这一过程。然而,在同行评审期间,有人建议我用RasterCodecs.Convert()来代替。因此,我修改了程序,并使用了这一方法。这样,就能够在一个单一的代码行执行图像转换!

Documentation: RasterCodecs.Convert

 

下载该项目

该示例项目的源代码您可以点击这里进行下载。

19 File Conversion Right-click Shell Extension.zip (16.32 kb)

要运行该项目,请将其解压缩到该目录下:C:\LEADTOOLS 19\Examples\DotNet\CS directory。

 

支持

关于其他产品的更多信息,请访问我们的官方网站

欢迎下载免费的全功能评估版SDK,全功能试用版中有这个例子的全部源代码。

同时欢迎您使用评估版期间的免费技术支持


关于葡萄城

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

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