ImageMagick: MagickCore, Low-level C API for ImageMagick

Processing
Options
Usage
MagickWand
MagickCore
PerlMagick
Magick++
Unix
Windows
Unix
Mac OS X
Windows
Links

The MagickCore API is a low-level interface between the C programming language and the ImageMagick image processing libraries and is recommended for wizard-level programmers only. Unlike the MagickWand C API which uses only a few opaque types and accessors, with MagickCore you almost exlusively access the structure members directly. A description of the MagickCore public methods are found here:

- Initialize or Destroy the ImageMagick Environment
- Constitute an Image
- Composite an Image
- Image Methods
- Count the Colors in an Image
- Image Distortions
- Dealing with Image Layers
- Dealing with Image Profiles
- Reduce the Number of Unique Colors in an Image
- Image Histograms
- Segment an Image with Thresholding Fuzzy c-Means
- Resize an Image
- Transform an Image
- Shear or Rotate an Image by an Arbitrary Angle
- Enhance an Image
- Add an Effect
- Add a Special Effect
- Decorate an Image
- Get/Set Image Properties
- Annotate an Image
- Paint on an Image
- Draw on an Image
- Create an Image Thumbnail
- Compute the discrete Fourier transform (DFT)
- Compare an Image to a Reconstructed Image
- Interactively Display and Edit an Image
- Interactively Animate an Image Sequence
- Convert to and from Cipher Pixels
- Working with Image Lists
- Get or Set Image Pixels
- Working with Cache Views
- The Pixel FIFO
- Read or Write Binary Large OBjects
- Loadable Modules
- Compute a Message Digest for an Image
- The Image Registry
- Dealing with Exceptions
- Memory Allocation
- Monitor or Limit Resource Consumption
- Monitor the Progress of an Image Operation
- Get the Version and Copyrights
- Deprecated Methods
- Error and Warning Codes

After you write your MagickCore program, compile it like this:

$magick> cc `MagickCore-config --cflags --cppflags` core.c `MagickCore-config --ldflags --libs`

Here is a example program that utilizes the MagickCore API to get you started, core.c. It reads a GIF image, creates a thumbnail, and writes it to disk in the PNG image format.

      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <time.h>
      #include <magick/MagickCore.h>

      int main(int argc,char **argv)
      {
        ExceptionInfo
          *exception;

        Image
          *image,
          *images,
          *resize_image,
          *thumbnails;

        ImageInfo
          *image_info;

        if (argc != 3)
          {
            (void) fprintf(stdout,"Usage: %s image thumbnail\n",argv[0]);
            exit(0);
          }
        /*
          Initialize the image info structure and read an image.
        */
        MagickCoreGenesis(*argv,MagickTrue);
        exception=AcquireExceptionInfo();
        image_info=CloneImageInfo((ImageInfo *) NULL);
        (void) strcpy(image_info->filename,argv[1]);
        images=ReadImage(image_info,exception);
        if (exception->severity != UndefinedException)
          CatchException(exception);
        if (images == (Image *) NULL)
          exit(1);
        /*
          Convert the image to a thumbnail.
        */
        thumbnails=NewImageList();
        while ((image=RemoveFirstImageFromList(&images)) != (Image *) NULL)
        {
          resize_image=ResizeImage(image,106,80,LanczosFilter,1.0,exception);
          if (resize_image == (Image *) NULL)
            MagickError(exception->severity,exception->reason,exception->description);
          (void) AppendImageToList(&thumbnails,resize_image);
          DestroyImage(image);
        }
        /*
          Write the image thumbnail.
        */
        (void) strcpy(thumbnails->filename,argv[2]);
        WriteImage(image_info,thumbnails);
        /*
          Destroy the image thumbnail and exit.
        */
        thumbnails=DestroyImageList(thumbnails);
        image_info=DestroyImageInfo(image_info);
        exception=DestroyExceptionInfo(exception);
        MagickCoreTerminus();
        return(0);
      }

Discourse Server • Mailing Lists • Studio