原创】关于.NET下开源及商业图像处理(PSD)组件

 

       本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html

本博客其他.NET开源项目文章目录:http://www.cnblogs.com/asxinyu/p/4329755.html

1 前言

这篇博客的背景是:为了完成吉日嘎拉的“PSD文件损坏检测和图层检测”任务,查找了目前.NET各种开源的及商业的图像处理资料,在完成任务之后,进行总结。此次任务主要是用C#操作PSD(PhotoShop)文件,中文资料很少,主要的英文资料都在CodeProject网站。项目要求对用户上传的PSD文件进行检测,是否损坏,是否能正常打开,并判断是否只有1个图层。俗话说:“冰冻三尺非一日之寒”,这次找关于C#处理PSD的开源资料,真是“挖地三尺”,我也觉得这“非一日之力”就可以做到。平时关注技术,了解很多,找起来才快,也需要一点主动学习的能力。

2 .NET图像处理组件总结

说起图像处理,肯定很多人都知道博客园的xiaoite,用.NET做图像处理,很强大。由于图像处理的特殊性,可能很多人认为.NET做图像处理效率有问题,但xiaoite用实际证明了其实这都不是问题,大家可以去他的博客详细了解下。呵呵,我只是一个菜鸟,把别人现成的东西组合一下,会使用而已。那下面介绍一下,我找到的几个.NET图像处理组件(和PSD相关的)。

2.1 Paint.NET

.NET下的图像处理开源项目,最有名的应该是Paint.NET,小巧,灵活,足够强大,相比笨重收费的PhotoShop,这真是一个不错的选择。虽然该项目源代码现在不开放了,但软件使用仍然是免费的。昨天看了一下他的dll,没有混淆,有精力的可以去反编译看看。我的解决办法也是从这个项目找到的答案。Paint.NET的源代码3.1版本的应该还可以在网上找得到,另外Paint.NET也有很多插件,比如Paint.NET_PSD_Plugin,就可以用插件来加载PSD文件,并转换为Paint.NET的格式。前几天,给一个朋友PS2张简单的图片,用的就是Paint.NET,操作和PhotoShop差不多,界面很清爽,功能足够强大吧,推荐一下。

2.2 Imagemagick.NET

Imagemagick.NET是用C#对开源的Imagemagick图像处理组件的进行了一个封装。里面的代码大部分都是C++/CLI,能力有限,没有深入研究。看了一下说明,支持的格式很多,但对PSD文件的图层和文件损坏检测也没有现成的,不过,这个项目的确很值得学习,有机会研究下 C++/CLI,对图像处理应该有很大帮助。Imagemagick支持的语言和平台都很广泛,值得一看。

2.3 Skimpt

Skimpt其实这个组件以前没看到过,是一个.NET下开源的屏幕截图软件。它的大部分代码我没仔细看,只发现它支持PSD文件,所以就主要看了看PSD操作的部分,相对不错,PSD代码部分也是借鉴了CodeProject上面的几篇文章。都很相似,不过都修改了不少错误,这个其实还不错,勉强可以正确判断图层,但是对PSD文件的损坏检测不了,它只是直接读取文件的头信息,并不去检验数据的正确性。如果有做屏幕截图之类的工具,这是一个不错的参考。虽然没用里面的代码,但也发现Google Code其实也有很多不错的项目。

2.4 ImageGlue.NET

ImageGlue.NET是商业的图像处理组件,支持的格式列了一大堆:支持的格式。由于这个组件我很早就知道,但没用过,手上也有破解版,所以就试了一下,可以对PSD文件的损坏检测,但是对图层的判断一直出错,有时候是正确的,有时候是错误的,商业组件做成这样,一怒之下,抛弃它了,而且破解版也不太敢用,当时只是试试看好用不,然后把里面的一小段代码弄出来就可以了,没想到这货还调用了非托管的dll,代码没虽然有混淆,但命名空间足够的坑爹,对图像的一些基本处理应该还是不错的,关键是支持的格式全面。留个脚印,让大家以后也有个选择。

2.5 其他关于.NET操纵PSD的文章

其实我首先查到的还是codeproject上的一篇2006年发表的英文博客Yet Another PSD Parser。该作者也是为了完成一个PSD的项目,需要.NET操作PSD文件,而处于版权和许可证的原因,没有采用Adobe公司的SDK,而是自己开发了这套组件。这个组件也是作者Endogine项目(一个2D的图像游戏引擎)的一部分,但可惜的是这个组件好像没有完善,这篇文章也没有更新,有不少错误。


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

【转载】关于.NET下开源及商业图像处理(PSD)组件的更多相关文章

  1. 开源 VS 商业,消息中间件你不知道的那些事

    11月23日,新炬网络中间件技术专家刘拓老师在DBA+社群中间件用户组进行了一次主题为“开源 VS 商业,消息中间件你不知道的那些事”的线上分享.小编特别整理出其中精华内容,供大家学习交流. 嘉宾简介 ...

  2. 开源项目商业模式分析(2) - 持续维护的重要性 - Selenium和WatiN

    该系列第一篇发布后收到不少反馈,包括: 第一篇里说的MonicaHQ不一定盈利 没错,但是问题在于绝大多数开源项目商业数据并没有公开,从而无法判断其具体是否盈利.难得MonicaHQ是公开的,所以才用 ...

  3. 善用GIMP(Linux下的Photoshop),图像处理轻松又自由

    善用GIMP(Linux下的Photoshop),图像处理轻松又自由 作者: 善用佳软 日期: 2013-02-16 分类: 2 图像影音 标签: GIMP, image 1. GIMP是什么? GI ...

  4. [转载]实战Linux下VMware虚拟机根目录空间扩充

    [转载]实战Linux下VMware虚拟机根目录空间扩充 (2011-07-31 21:34:34) 转载▼ 标签: 转载   原文地址:实战Linux下VMware虚拟机根目录空间扩充作者:shar ...

  5. 转载:Ubuntu下deb包的安装方法

    转载:Ubuntu下deb包的安装方法,http://blog.csdn.net/kevinhg/article/details/5934462 deb是debian linus的安装格式,跟red ...

  6. .NET平台下开源三维 GIS (地形与游戏)平台资料

    .net平台下开源(免费)三维(地形,游戏)GIS平台 open source (free) 3d (terrain,game) gis platform based on .net (C#) Axi ...

  7. 【转载】Linux下安装LoadRunner LoadGenerator

    原文地址:[转载]Linux下安装LoadRunner LoadGenerator作者:邱建忠tester LR的负载机安装在linux的理由: 1.windows xp,双核+4G内存,基本上每个v ...

  8. NTCPMSG 开源高性能TCP消息发送组件

    https://www.cnblogs.com/eaglet/archive/2013/01/07/2849010.html 目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能 ...

  9. Twproject Gantt – 开源的 JavaScript 甘特图组件

    Twproject Gantt 是一款基于 jQuery 开发的甘特图组件,也可以创建其它图表,例如任务树(Task Trees).内置编辑.缩放和 CSS 皮肤等功能.更重要的是,它是免费开源的. ...

随机推荐

  1. python完整课程

    python完整课程 python课程概述 python课程大纲 链接:http://www.cnblogs.com/lx63blog/articles/9054294.html 课程结构: 1.安装 ...

  2. [Java]刷题中的Java基础

    数组 取数组长度是属性length ArrayList ArrayList<Integer> maxRootHeap = new ArrayList<Integer>(); m ...

  3. 记一次win10+oracle11.2安装

    下载安装文件,地址:链接:https://pan.baidu.com/s/1gObmWv5_w2Y4Jlf2-RkBYA 密码:1rx9 安装手册参考:链接:https://pan.baidu.com ...

  4. oralce 的安装以及plsql的配置的html连接

    https://www.cnblogs.com/xkstudy/p/6400738.html

  5. es5的语法学习

    1. strict模式 严格模式,限制一些用法,'use strict'; 2. Array增加方法 增加了every.some .forEach.filter .indexOf.lastIndexO ...

  6. Oracle通过SCN做增量备份修复DG

    DG由于网络原因或者bug原因经常不同步,有时隔得时间久了,就会丢失归档日志,或者长时间的归档恢复较慢,有一种可以基于scn的方式来恢复DG库,使用基于scn的增量备份来恢复standby库可以节省大 ...

  7. txt 修改

    [61TECH_HEIBAILIUYI]#gaIcldGcyd7ducFc3deaRaOdAd4dPdMdaenc1chaeedeGcfcfeyd1cedhbidIcXcIdBdbdvdfcvbjdr ...

  8. char对比varchar

    char对比varchar 相同点:char与varchar都是存储字符串的数据类型 不同点:char是固定长度的字符类型,而varchar是可变长度的字符类型,这个一定要注意.另外进行select时 ...

  9. 【NIFI】 Apache NiFI 集群搭建

    NiFI 集群介绍 NiFi集群架构 NiFi采用Zero-Master Clustering范例.集群中的每个节点对数据执行相同的任务,但每个节点都在不同的数据集上运行.其中一个节点自动选择(通过A ...

  10. python 模块——os 模块

    os 模块--操作系统的各种接口 常用函数: os.path os.path.join(path,*paths) (常用,设置文件路径)将一个或者多个路径连接起来. PATH_TO_TEST_IMAG ...