2009-09-14 65 views
1

我使用ImageMagick的在我的ASP.NET webproject当用户visists一个网站,20个媒体项目使用的System.Diagnostics.Process通过命令行的ImageMagick在asp.net

产生通过的ImageMagick的命令行界面大拇指从数据库中取出,并且对于每个的拇指图像获取生成,像这样:

var thumb = media.GetThumb(100, 100); 

其开始从ImageMagick的

使用“转换”命令然而的方法,所述性能可以更好。

我知道,缓存拇指是一个不错的选择,而这正是我要做的。

但是,我怀疑,为每个未缓存的图像启动一个新的进程是相当昂贵的。任何更好像“重用”一个进程或保持imagemagick在内存中,并访问此实例或不是什么?

+1

我确信你可以通过内存/进程管理获得更高级的内存,但我认为你已经有了正确的方法,使用昂贵的操作并缓存结果。周期很便宜,只要你消除了每次请求发生的代价高昂的操作,而这些操作不必是那些应该在ASP.NET IMO中完成的主要优化。 – 2009-09-14 15:55:11

回答

0

由于生成缩略图所需的时间不算太长,我现在只使用缓存解决方案。此外,我不想增加项目的复杂性 - 尽可能简单。

但是对于未来的项目,我试图评估是否可以在Application_Start事件中启动一个后台线程,该事件查询数据库中的10个图像,生成他们的大拇指并继续下一个10等等,直到没有更多的图像没有缩略图存在。这似乎是一个可行的方法,虽然我还没有在生产中使用它。

1

尝试ImageMagick.NET

也许最大的图像处理API存在的.NET包装,ImageMagick

虽然仍处于alpha, 它(或更早版本)可能会提供您需要的功能。 对source的简要介绍只能看到很少的功能,但它可能是一个开始。

+0

感谢您的提示,我还不知道它。但是,图书馆似乎还没有准备好生产。不过,这可能是未来的一种选择。 – Max 2009-09-17 15:04:28