在Windows7+Cygwin环境下使用ImageMagick++编程

时间:2022-02-01 08:57:32
     第一次写博客,不知道咋开头,还是开门见山吧。
    这个教程不仅仅适应于在cygwin开发环境下使用,在linux系统,unix等系统下也可以。主要是自己遇到问题了,网上又很难找到相关解答,所以把自己的经验列出来,大家交流一下。
    如何在windows下安装cygwin以及将cygwin作为开发环境等等我就不在此赘述了,度娘上面好多好多,大家随便搜搜就能找到答案了,不过建议大家把一些基本的工具装上,在下面的操作中会方便很多,这个在安装cygwin的时候就会有相关介绍的,我也不多说了。好了,接下来进入正题。
    ImageMagick是个很不错的做图像处理的东东,它为用户提供工具集合,让用户可以通过命令行的形式处理图片,同时它也支持多种开发语言,嵌入到用户的代码中处理相关程序。
一、基础环境安装
    在安装ImageMagick之前,你得保证你的cygwin中安装了Jpeg、libPng、FreeType库,否则imageMagick无法读取jpeg和png图片,字体文件也读不了,下面会给出下载链接,根据我当时使用的最新版本,列出来:

   freetype-2.5.5.tar.gz:http://fossies.org/linux/misc/freetype-2.5.5.tar.gz/


  zlib-1.2.8.tar.gz :http://fossies.org/linux/misc/zlib-1.2.8.tar.gz/

    libpng-1.7.0beta48.tar.gz:http://fossies.org/linux/misc/libpng-1.7.0beta48.tar.gz/

    jpegsrc.v9a.tar.gz:http://fossies.org/linux/misc/jpegsrc.v9a.tar.gz/

     为了节省篇幅,具体的安装过程我就不多说了,自行百度哦,一定会找到令您满意的答案。

二、ImageMagick安装

       ImageMagick的下载地址可以在http://www.imagemagick.org/script/install-source.php#unix这里找到,或者使用楼主提供的直通车ImageMagick.tar.gz点击下载哦。

       下载完成后,把该压缩包放在某位置,自行决定,比如我把文件放在D盘,接下来给大家走个流程,ps:我用的版本是6.9.0-5

    $ cd /cygdrive/d
$ tar xzvf ImageMagick.tar.gz
$ cd ImageMagick-6.9.0-5
$ ./configure
$ make && make install
        等一会,就安装完了,下面大家可以在/'usr/local/include下可以看到ImageMagick-6这个文件夹,然后里面是好多头文件,同时在/usr/ocal/lib、/usr/local/bin、/usr/local/share下也能见到ImageMagick的影子,这时在cygwin中输入

    $ convert --version
        如果看到ImageMagick的相关安装信息,就说明您已安装成功!小小的祝贺一下!!

三、小试牛刀

       接下来是最终的一步,也是很重要的一步,主要是费了好大的功夫才搞定利用ImageMagick进行代码实现。嘿嘿,下面给大家抛个例程,这个例子很简单,就是从一幅图片上截取一小块正方形,然后保存下来

    #include <Magick++.h> 
#include <iostream>
using namespace std;
using namespace Magick;
int main(int argc,char **argv)
{
InitializeMagick(*argv);

// Construct the image object. Seperating image construction from the
// the read operation ensures that a failure to read the image file
// doesn't render the image object useless.
Image image;
try {
// Read a file into image object
image.read( "girl.gif" );

// Crop the image to specified size (width, height, xOffset, yOffset)
image.crop( Geometry(100,100, 100, 100) );

// Write the image to a file
image.write( "x.gif" );
}
catch( Exception &error_ )
{
cout << "Caught exception: " << error_.what() << endl;
return 1;
}
return 0;
}
      接下来保存文件,编译一下,但是这个编译的命令与传统的不大一样,下面再详细说一下。比如保存的文件名为demo.cpp,然后cd到该代码文件所在的文件夹后,就要使用
   c++ -o demo demo.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`

      这句话,就可以顺利搞定啦,然后大家尽情的去耍一把ImageMagick吧。

      最后再多几句闲话,大家可能会感到奇怪,一般在linux下面的编译工具不都是gcc啦,g++啦,怎么会有这种编译方式呢?下面我把官网上的某段话摘录下来给大家看一下:

   A helper script named Magick++-config is installed under Unix which assists with recalling compilation options required to compile and link programs which use Magick++. For example, the following command will compile and link the source file demo.cpp to produce the executable demo (notice that quotes are backward quotes):
     这段话大概意思就是说,在Unix系统下安装了一个Magick++-config辅助脚本文件,辅助用户编译使用Magick++开发的程序。
     大家可以在 http://www.imagemagick.org/script/magick++.php看到更详细的说法,不过还是建议用户直接在命令行中输入
   $ Magick++-config

      更直观,好咯,基本上到这里就结束了,欢迎大家讨论交流!

 欢迎转载,请标明原地址:http://blog.csdn.net/s2392735818/article/details/43765015,谢谢