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
- Dealing with Image Colorspaces
- Dealing with Image Profiles
- Reduce the Number of Unique Colors in an Image
- 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
- Set Text Attributes
- Annotate an Image
- Paint on an Image
- Draw on an Image
- Create an Image Thumbnail
- Compare an Image to a Reconstructed Image
- Interactively Display and Edit an Image
- Interactively Animate an Image Sequence
- Get or Set Image Pixels
- Working with Image Lists
- Working with Cache Views
- The Pixel FIFO
- Read or Write Binary Large OBjects
- Compute a Message Digest for an Image
- The Registry
- Dealing with Exceptions
- Memory Allocation
- Monitor or Limit Resource Consumption
- Monitor the Progress of an Image Operation
- Get the Version and Copyrights

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

      cc `Magick-config --cflags --cppflags` core.c `Magick-config --ldflags --libs`

Here is a example program that utilizes the MagickWand 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/ImageMagick.h>

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

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

        ImageInfo
          *image_info;

        /*
          Initialize the image info structure and read an image.
        */
        InitializeMagick(*argv);
        GetExceptionInfo(&exception);
        image_info=CloneImageInfo((ImageInfo *) NULL);
        (void) strcpy(image_info->filename,"image.gif");
        images=ReadImage(image_info,&exception);
        if (exception.severity != UndefinedException)
          CatchException(&exception);
        if (images == (Image *) NULL)
          exit(1);
        /*
          Turn the images into a thumbnail sequence.
        */
        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 as MIFF and destroy it.
        */
        (void) strcpy(thumbnails->filename,"image.png");
        WriteImage(image_info,thumbnails);
        thumbnails=DestroyImageList(thumbnails);
        image_info=DestroyImageInfo(image_info);
        DestroyExceptionInfo(&exception);
        DestroyMagick();
        return(0);
      }

Discourse Server | Mailing Lists | Image Gallery | ImageMagick Studio
© 1999-2005 ImageMagick Studio LLC