Color Modes

Magick++,C++ API

文档获取 Magick++安装报告错误

Magick++ APIImageMagick 图像处理库的面向对象的 C++ API。

Magick++ 支持一个受 PerlMagick 启发的对象模型。图像支持隐式引用计数,因此复制构造函数和赋值几乎不产生任何成本。实际复制图像(如果需要)的成本是在修改之前发生的,此复制由 Magick++ 自动管理。取消引用的副本会自动删除。图像对象支持值(而不是指针)语义,因此在内存中同时支持图像的多个生成非常简单。

Magick++ 提供对 标准模板库 (STL) 的集成支持,因此可以使用可用的强大容器(例如 dequevectorlistmap)来编写类似于 PERL & PerlMagick 可能的程序。提供 ImageMagick 列表式操作的 STL 兼容模板版本,以便可以对存储在 STL 容器中的多个图像执行操作。

文档

为所有 Magick++ 类、类方法和模板函数提供了详细的 文档,这些函数构成了 API。有关 Magick++ 的入门教程,请参见 Magick++ 入门指南。如果您想更正、增强或扩展教程,我们还包括 源代码

获取 Magick++

Magick++ 作为 ImageMagick 源代码发布的一部分,可以通过 HTTPGitHub 获取。

安装

在您获得 Magick++ 源代码后,请按照这些针对 UNIX 和 Windows 的详细 安装说明 进行操作。

使用

在 Linux 下安装了一个名为 Magick++-config 的辅助脚本,它有助于回忆编译和链接使用 Magick++ 的程序所需的编译选项。例如,以下命令编译并链接源文件 demo.cpp 以生成可执行文件 demo(请注意,引号是反引号)。

c++ `Magick++-config --cxxflags --cppflags` -O2 -o demo demo.cpp \
  `Magick++-config --ldflags --libs` 

如果 ImageMagick 不在您的默认系统路径中,请设置 PKG_CONFIG_PATH 环境变量。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 

Windows 用户可以通过手动编辑 Magick++ 演示程序之一的项目文件来开始使用。

请注意,在 Windows(以及可能在 Mac 上)下,可能需要在使用 Magick++ 库之前初始化 ImageMagick 库。此初始化是通过将路径传递到 ImageMagick DLL(假设它们与您的程序位于同一目录中)到 InitializeMagick() 函数调用来执行的。这通常是通过提供程序的路径(argv[0])来完成的,如以下示例所示。

int main( int argc, char ** argv) {
  InitializeMagick(*argv);
  ...  

此初始化步骤在 Linux、Linux、Cygwin 或任何其他支持将 ImageMagick 安装在已知位置概念的操作环境中是不需要的。

以下是一个使用 Magick++ API 的示例程序,可帮助您入门,magick++.cpp。它读取图像、裁剪图像并以 PNG 图像格式将图像写入磁盘。


#include <Magick++.h> 
#include <iostream> 

using namespace std; 
using namespace Magick; 

int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);

  // Construct the image object. Separating 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( "logo:" );

    // 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( "logo.png" ); 
  } 
  catch( Exception &error_ ) 
    { 
      cout << "Caught exception: " << error_.what() << endl; 
      return 1; 
    } 
  return 0; 
} 

报告错误

有关使用的问题,请发送至 Magick++ 社区论坛,或报告任何错误。