ImageMagick – MagickCore, C API: Working with Image Lists
Author: ImageMagick Studio LLC
Description: ImageMagick is a powerful, open-source software suite for creating, editing, converting, and manipulating images in over 200 formats. Ideal for web developers, graphic designers, and researchers, it offers versatile tools for image processing, including batch processing, format conversion, and complex image transformations.
Keywords: MagickCore, C API: Working with Image Lists, Image Processing, Digital Image Editing, Image Conversion, Open-Source Software, Image Manipulation, Command-Line Image Tools

# List

## AppendImageToList

AppendImageToList() appends the second image list to the end of the first list. The given image list pointer is left unchanged, unless it was empty.

The format of the AppendImageToList method is:

    AppendImageToList(Image *images,const Image *image)

A description of each parameter follows:

images
  the image list to be appended to.
image
  the appended image or image list.

## CloneImageList

CloneImageList() returns a duplicate of the image list.

The format of the CloneImageList method is:

    Image *CloneImageList(const Image *images,ExceptionInfo *exception)

A description of each parameter follows:

images
  the image list.
exception
  return any errors or warnings in this structure.

## CloneImages

CloneImages() clones one or more images from an image sequence, using a comma separated list of image numbers or ranges.

The numbers start at 0 for the first image in the list, while negative numbers refer to images starting counting from the end of the range. Images may be referred to multiple times to clone them multiple times. Images referred beyond the available number of images in list are ignored.

Images referenced may be reversed, and results in a clone of those images also being made with a reversed order.

The format of the CloneImages method is:

    Image *CloneImages(const Image *images,const char *scenes,
      ExceptionInfo *exception)

A description of each parameter follows:

images
  the image sequence.
scenes
  This character string specifies which scenes to clone (e.g. 1,3-5,7-3,2).
exception
  return any errors or warnings in this structure.

## DeleteImageFromList

DeleteImageFromList() deletes an image from the list. List pointer is moved to the next image, if one is present. See RemoveImageFromList().

The format of the DeleteImageFromList method is:

    DeleteImageFromList(Image **images)

A description of each parameter follows:

images
  the image list.

## DeleteImages

DeleteImages() deletes one or more images from an image sequence, using a comma separated list of image numbers or ranges.

The numbers start at 0 for the first image, while negative numbers refer to images starting counting from the end of the range. Images may be referred to multiple times without problems. Image referred beyond the available number of images in list are ignored.

If the referenced images are in the reverse order, that range will be completely ignored, unlike CloneImages().

The format of the DeleteImages method is:

    DeleteImages(Image **images,const char *scenes,ExceptionInfo *exception)

A description of each parameter follows:

images
  the image sequence.
scenes
  This character string specifies which scenes to delete (e.g. 1,3-5,-2-6,2).
exception
  return any errors or warnings in this structure.

## DestroyImageList

DestroyImageList() destroys an image list.

The format of the DestroyImageList method is:

    Image *DestroyImageList(Image *image)

A description of each parameter follows:

image
  the image sequence.

## DuplicateImages

DuplicateImages() duplicates one or more images from an image sequence, using a count and a comma separated list of image numbers or ranges.

The numbers start at 0 for the first image, while negative numbers refer to images starting counting from the end of the range. Images may be referred to multiple times without problems. Image referred beyond the available number of images in list are ignored.

The format of the DuplicateImages method is:

    Image *DuplicateImages(Image *images,const size_t number_duplicates,
      const char *scenes,ExceptionInfo *exception)

A description of each parameter follows:

images
  the image sequence.
number_duplicates
  duplicate the image sequence this number of times.
scenes
  This character string specifies which scenes to duplicate (e.g. 1,3-5,-2-6,2).
exception
  return any errors or warnings in this structure.

## GetFirstImageInList

GetFirstImageInList() returns a pointer to the first image in the list.

The format of the GetFirstImageInList method is:

    Image *GetFirstImageInList(const Image *images)

A description of each parameter follows:

images
  the image list.

## GetImageFromList

GetImageFromList() returns an image at the specified index from the image list. Starting with 0 as the first image in the list.

A negative offset will return the image from the end of the list, such that an index of -1 is the last image.

If no such image exists at the specified offset a NULL image pointer is returned. This will only happen if index is less that the negative of the list length, or larger than list length -1. EG: ( -N to N-1 )

The format of the GetImageFromList method is:

    Image *GetImageFromList(const Image *images,const ssize_t index)

A description of each parameter follows:

images
  the image list.
index
  the position within the list.

## GetImageIndexInList

GetImageIndexInList() returns the offset in the list of the specified image.

The format of the GetImageIndexInList method is:

    ssize_t GetImageIndexInList(const Image *images)

A description of each parameter follows:

images
  the image list.

## GetImageListLength

GetImageListLength() returns the length of the list (the number of images in the list).

The format of the GetImageListLength method is:

    size_t GetImageListLength(const Image *images)

A description of each parameter follows:

images
  the image list.

## GetLastImageInList

GetLastImageInList() returns a pointer to the last image in the list.

The format of the GetLastImageInList method is:

    Image *GetLastImageInList(const Image *images)

A description of each parameter follows:

images
  the image list.

## GetNextImageInList

GetNextImageInList() returns the next image in the list.

The format of the GetNextImageInList method is:

    Image *GetNextImageInList(const Image *images)

A description of each parameter follows:

images
  the image list.

## GetPreviousImageInList

GetPreviousImageInList() returns the previous image in the list.

The format of the GetPreviousImageInList method is:

    Image *GetPreviousImageInList(const Image *images)

A description of each parameter follows:

images
  the image list.

## ImageListToArray

ImageListToArray() is a convenience method that converts an image list to a sequential array, with a NULL image pointer at the end of the array.

The images remain part of the original image list, with the array providing an alternative means of indexing the image array.

group = ImageListToArray(images, exception); while (i = 0; group[i] != (Image *) NULL; i++) printf("s\n", group[i]->filename); printf("d images\n", i); group = RelinquishMagickMemory(group);

The format of the ImageListToArray method is:

    Image **ImageListToArray(const Image *images,ExceptionInfo *exception)

A description of each parameter follows:

image
  the image list.
exception
  return any errors or warnings in this structure.

## InsertImageInList

InsertImageInList() insert the given image or image list, into the first image list, immediately AFTER the image pointed to. The given image list pointer is left unchanged unless previously empty.

The format of the InsertImageInList method is:

    InsertImageInList(Image **images,Image *insert)

A description of each parameter follows:

images
  the image list to insert into.
insert
  the image list to insert.

## NewImageList

NewImageList() creates an empty image list.

The format of the NewImageList method is:

    Image *NewImageList(void)

## PrependImageToList

PrependImageToList() prepends the image to the beginning of the list.

The format of the PrependImageToList method is:

    PrependImageToList(Image *images,Image *image)

A description of each parameter follows:

images
  the image list.
image
  the image.

## RemoveImageFromList

RemoveImageFromList() removes and returns the image pointed to.

The given image list pointer is set to point to the next image in list if it exists, otherwise it is set to the previous image, or NULL if list was emptied.

The format of the RemoveImageFromList method is:

    Image *RemoveImageFromList(Image **images)

A description of each parameter follows:

images
  the image list.

## RemoveFirstImageFromList

RemoveFirstImageFromList() removes and returns the first image in the list.

If the given image list pointer pointed to the removed first image, it is set to the new first image of list, or NULL if list was emptied, otherwise it is left as is.

The format of the RemoveFirstImageFromList method is:

    Image *RemoveFirstImageFromList(Image **images)

A description of each parameter follows:

images
  the image list.

## RemoveLastImageFromList

RemoveLastImageFromList() removes and returns the last image from the list.

If the given image list pointer pointed to the removed last image, it is set to the new last image of list, or NULL if list was emptied, otherwise it is left as is.

The format of the RemoveLastImageFromList method is:

    Image *RemoveLastImageFromList(Image **images)

A description of each parameter follows:

images
  the image list.

## ReplaceImageInList

ReplaceImageInList() replaces an image in the list with the given image, or list of images. Old image is destroyed.

The images list pointer is set to point to the first image of the inserted list of images.

The format of the ReplaceImageInList method is:

    ReplaceImageInList(Image **images,Image *replace)

A description of each parameter follows:

images
  the list and pointer to image to replace
replace
  the image or image list replacing the original

## ReplaceImageInListReturnLast

ReplaceImageInListReturnLast() is exactly as ReplaceImageInList() except the images pointer is set to the last image in the list of replacement images.

This allows you to simply use GetNextImageInList() to go to the image that follows the just replaced image, even if a list of replacement images was inserted.

The format of the ReplaceImageInList method is:

    ReplaceImageInListReturnLast(Image **images,Image *replace)

A description of each parameter follows:

images
  the list and pointer to image to replace
replace
  the image or image list replacing the original

## ReverseImageList

ReverseImageList() reverses the order of an image list. The list pointer is reset to that start of the re-ordered list.

The format of the ReverseImageList method is:

    void ReverseImageList(Image **images)

A description of each parameter follows:

images
  the image list.

## SpliceImageIntoList

SpliceImageIntoList() removes 'length' images from the list and replaces them with the specified splice. Removed images are returned.

The format of the SpliceImageIntoList method is:

    SpliceImageIntoList(Image **images,const size_t,
      const Image *splice)

A description of each parameter follows:

images
  the image list.
length
  the length of the image list to remove.
splice
  Replace the removed image list with this list.

## SplitImageList

SplitImageList() splits an image into two lists, after given image The list that was split off is returned, which may be empty.

The format of the SplitImageList method is:

    Image *SplitImageList(Image *images)

A description of each parameter follows:

images
  the image list.