2013-08-16 26 views
1

I downloaded在项目中使用ImageMagick的无安装版本(ImageMagick-6.8.6-8-Q16-x86-windows.zip),但它在123MB的时候非常大。ImageMagick的resize命令(mogrify)是否需要任何DLL?

我只需要mogrify.exe来做一个简单的图片大小调整。我将它复制到一个单独的目录,并且运行正常,但我不确定我是否已经有一些必需的DLL(用户可能没有这些)。

我在mogrify上运行Process Explorer,但它表示图像没有使用DLL。

这是正确的还是我还需要包括这些?

atl100.dll mfc100.dll msvcp100.dll msvcr100.dll vcomp100.dll X11.dll Xext.dll 

(从ZIP文件的完整列表)

我相信vcomp100.dll是Visual C++可再发行的一部分,所以我想我应该包括这个,如果用户的机器上没有安装?

另一面,X11.dlllooks unnecessary

除了研究每个单独的DLL之外,是否有更简单的方法来解决这个问题?

回答

1

vcomp100.dll库是在mogrify.exe内调整大小的唯一依赖项。为了安全起见,您应该将该DLL重新分发到与可执行文件相同的目录中。

除了研究每个单独的DLL之外,是否有更简单的方法来解决这个问题?

我不能回答最简单的方法是什么(读取每个库文件外),但我会强烈建议编写一unit test ,以确保您的要求,所有的预期功能是满足。我能够在XP的一个vanilla安装上运行一个测试套件(通过VirtualBox),并确认调整大小的PNG,JPEG和基本的drawing工作没有额外的依赖。

0

要发现Windows上的可执行文件和dll依赖关系,您可以使用DependencyWalker(免费工具)。 ProcessExplorer只会告诉你在检查它的特定时刻哪些DLL是由进程加载的。 DLL可以根据需要加载或根本不加载,这取决于可执行文件的需求,因此DependencyWalker可以在更多情况下帮助您。

+0

DependencyWalker显示8个用于mogrify.exe的ImageMagic DLL。如果我将所有这8个DLL复制到相同的路径,它仍然不工作,因为缺少'IM_MOD_RL_jpeg_.dll'。与其他8相同路径中的此DLL的副本不起作用。我能做什么? – PeterCo

+0

它适用于便携式版本'ImageMagick-6.9.0-0-Q16-x86-windows.zip'。这包括便携式Win32静态每像素16位版本。只需复制到您的主机并运行(无需安装程序,无Windows注册表项)。你只需要一个单一的mogogy.exe。 – PeterCo