ImageMagick 的安装及使用 - Rogn - 博客园https://www.cnblogs.com/lfri/p/11601211.html
Visual Studio2013下Magick++配置方法_子宽的专栏-CSDN博客ImageMagick是一个图片编辑的跨平台开源库,可以读写各种类型的图片(包括svg格式的矢量图)并对其进行处理。本文将介绍Win10平台下用源码编译ImageMagick库的流程,主要支持Visual Studio 2013的调用。https://blog.csdn.net/u010281174/article/details/52224829ImageMagick – Install from Source
https://imagemagick.org/script/install-source.php#windowsLinux环境安装imagemagick_工匠解码-CSDN博客系统环境:[root@njyf-test-zxl-10-20-2-127 pic]# cat /etc/*releaseCentOS Linux release 7.1.1503 (Core) 废话不多说,直接按如下步骤操作即可。步骤1:安装一些必要的yum,直接复制如下命令即可yum install tcl-devel.x86_64 libpng-devel.x86_64 libjpeg-de
https://blog.csdn.net/MrZhangXL/article/details/779346911.win10下安装imagemagick
1.1 使用命名行去调用
建议安装7.0以后的版本,不用配环境变量,在官网的download下载之后,一路next即可。
其中需要注意的是一定要勾选第5个,install development headers and blibraries for c and c++。方便后面直接在vs中调用imagemagick的api。
装完之后有
安装完成后可以用命名行来调用
此处7.0之后的版本是7.1.0-Q16,7.0之前的版本为6.9.12-Q16,这两个版本还是有点区别的,装完都可以通过命令行调用,但是6.9.12-Q16的有lib和include。
1.2 在vs中通过magick的api来调用
这里其实也不用源码编译,可以用win版本的exe,和opencv同样的套路即可,但是在7.0版本之前还是有include和lib文件的,可以像opencv一样进行配置,7.0之后就没有了,想在vs中调用的就是直接用源码编译,不过即便是7.0之前的版本,基本都是通过vs2013编译的,如果项目用其他版本的话就会导致同时依赖多个版本的vc运行库问题,所以还是用动态库链接的话,还是从源码安装,保证和自己的项目使用相同版本的编译器。
1.2.1 VS13用exe关联 and VS19关联
直接关联指的是用exe安装目录下的lib,include导入到VS中,这种方式会出现很多奇怪的错误,但是main函数还是能够导入magick++.h的,本来以为imagemagick的exe版本是用VS13编译的,把VS变成13版本直接关联应该是可以的,但实际上也不行,步骤是1.在VC++中添加包含目录,库目录,在C/C++中常规中添加附加包含目录,在链路器中的常规中添加库目录,2.要添加安装的imagemagick的环境变量,3.是要把在链路器中添加的库目录的几个dll添加到windows/system32下面,基本和在本地安装opencv是一样的。我尝试了VS13和VS19,这两个都能链接到magick++.h,但都有错,跑不起来。这条路我看博客上讲的最多,但是实际上还是跑不起来的。
用exe装了,在vs中直接加载动态库,我看exe版本是用VS13编译的,用VS13和VS19跑的,能够链接到头文件,但是跑不同,这种就属于直接使用编译好的二进制包了。
1.2.2 用VS重新编译源码
用VS19编译的话,可以编译成功,但是缺少几个重要的dll,在imagemagick的windows版本的编译上在ImageMagick-Windows\VisualMagick\configure目录下提供了configure.2019.sln和configure.sln,前者是在VS2019编译的,后者是VS2013编译的,VS2013去编译configure.sln是可以生成configure.exe,但是打开exe之后只能从VS15开始支持,我选了VS19,之后在用VS13调Visual*.sln,直接报错,这里还是有问题的。用vs19编译时,可以生成中生成解决方案来运行,编译一次时间非常长。CORE_DB_Mangick++_.dll,CORE_DB_magick_.dll,CORE_DB_wand.dll编完少这三个最重要的动态链接库。
用VS编译完的和exe直接解压安装的其实是一样的,我对比了下,VS编译源码的比exe解压安装的正好少了几个核心的dll。
1.2.3 比较VS编译源码的产生的文件和exe安装文件
VS编译的源码把基础的imagemagick所依赖的库都放在一起了,真正编出来有用的核心代码可能没那么多,之所以编译了那么长时间,可能都在编译其他的库了,意义不大。核心还是CORE_DB_Mangick++_.dll,CORE_DB_magick_.dll,CORE_DB_wand.dll和它对应的lib文件。
2.linux下安装imagemagick
版本:ImageMagick 7.1.0-19 Q16-HDRI x86_64,
linux下比较好的地方在于用gcc编译,不用担心vs下不同版本编译的问题,在linux上装好之后,可以直接通过include<>来导入头文件调用它,但是cmakelist上必须要链接imagemagick,这个和常规的opencv是一样的,如果用c++版本的话,在linux上还是要通过cmakelist去链接它,但是通过命令行是没问题的。
解压 tar -xzvf ImageMagick-7.1.0-19
进入目录 cd ImageMagick-7.1.0-19
执行 ./configure
执行 sudo make
执行 sudo make install
执行 ldconfig /usr/local/lib
检测是否成功 convert -version
3.lib和dll之间的关系
动态链接的情况下,有两个文件:一个是LIB文件,一个是DLL文件。LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中相应函数代码的地址,从而节省了内存资源。DLL和LIB文件必须随应用程序一起发行,否则应用程序会产生错误。