ImageMagick: MagickWand, C API for ImageMagick: Deprecated Methods
Author: ImageMagick Studio LLC
Description: ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
Keywords: magickwc, api, for, imagemagick:, deprecated, methods, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert

MagickAverageImages • ClonePixelView • DestroyPixelView • DuplexTransferPixelViewIterator • GetPixelViewException • GetPixelViewHeight • GetPixelViewIterator • GetPixelViewPixels • GetPixelViewWand • GetPixelViewWidth • GetPixelViewX • GetPixelViewY • IsPixelView • MagickClipPathImage • DrawGetFillAlpha • DrawGetStrokeAlpha • DrawPeekGraphicWand • DrawPopGraphicContext • DrawPushGraphicContext • DrawSetFillAlpha • DrawSetStrokeAlpha • MagickColorFloodfillImage • MagickDescribeImage • MagickFlattenImages • MagickGetImageAttribute • MagickGetImageMatte • MagickGetImagePixels • MagickGetImageSize • MagickMapImage • MagickMatteFloodfillImage • MagickMedianFilterImage • MagickMinimumImages • MagickModeImage • MagickMosaicImages • MagickOpaqueImage • MagickPaintFloodfillImage • MagickPaintOpaqueImage • MagickPaintTransparentImage • MagickRadialBlurImage • MagickRecolorImage • MagickReduceNoiseImage • MagickMaximumImages • MagickSetImageAttribute • MagickSetImageIndex • MagickTransparentImage • MagickRegionOfInterestImage • MagickSetImagePixels • MagickWriteImageBlob • NewPixelView • NewPixelViewRegion • PixelGetNextRow • PixelIteratorGetException • SetPixelViewIterator • TransferPixelViewIterator • UpdatePixelViewIterator

## MagickAverageImages

MagickAverageImages() average a set of images.

The format of the MagickAverageImages method is:

    MagickWand *MagickAverageImages(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## ClonePixelView

ClonePixelView() makes a copy of the specified pixel view.

The format of the ClonePixelView method is:

    PixelView *ClonePixelView(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## DestroyPixelView

DestroyPixelView() deallocates memory associated with a pixel view.

The format of the DestroyPixelView method is:

    PixelView *DestroyPixelView(PixelView *pixel_view,
      const size_t number_wands,const size_t number_threads)

A description of each parameter follows:

pixel_view
  the pixel view.
number_wand
  the number of pixel wands.
number_threads
  number of threads.

## DuplexTransferPixelViewIterator

DuplexTransferPixelViewIterator() iterates over three pixel views in parallel and calls your transfer method for each scanline of the view. The source and duplex pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination pixel view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.

Use this pragma:

        #pragma omp critical

to define a section of code in your callback transfer method that must be executed by a single thread at a time.

The format of the DuplexTransferPixelViewIterator method is:

    MagickBooleanType DuplexTransferPixelViewIterator(PixelView *source,
      PixelView *duplex,PixelView *destination,
      DuplexTransferPixelViewMethod transfer,void *context)

A description of each parameter follows:

source
  the source pixel view.
duplex
  the duplex pixel view.
destination
  the destination pixel view.
transfer
  the transfer callback method.
context
  the user defined context.

## GetPixelViewException

GetPixelViewException() returns the severity, reason, and description of any error that occurs when utilizing a pixel view.

The format of the GetPixelViewException method is:

    char *GetPixelViewException(const PixelWand *pixel_view,
      ExceptionType *severity)

A description of each parameter follows:

pixel_view
  the pixel pixel_view.
severity
  the severity of the error is returned here.

## GetPixelViewHeight

GetPixelViewHeight() returns the pixel view height.

The format of the GetPixelViewHeight method is:

    size_t GetPixelViewHeight(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## GetPixelViewIterator

GetPixelViewIterator() iterates over the pixel view in parallel and calls your get method for each scanline of the view. The pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. Any updates to the pixels in your callback are ignored.

Use this pragma:

        #pragma omp critical

to define a section of code in your callback get method that must be executed by a single thread at a time.

The format of the GetPixelViewIterator method is:

    MagickBooleanType GetPixelViewIterator(PixelView *source,
      GetPixelViewMethod get,void *context)

A description of each parameter follows:

source
  the source pixel view.
get
  the get callback method.
context
  the user defined context.

## GetPixelViewPixels

GetPixelViewPixels() returns the pixel view pixel_wands.

The format of the GetPixelViewPixels method is:

    PixelWand *GetPixelViewPixels(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## GetPixelViewWand

GetPixelViewWand() returns the magick wand associated with the pixel view.

The format of the GetPixelViewWand method is:

    MagickWand *GetPixelViewWand(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## GetPixelViewWidth

GetPixelViewWidth() returns the pixel view width.

The format of the GetPixelViewWidth method is:

    size_t GetPixelViewWidth(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## GetPixelViewX

GetPixelViewX() returns the pixel view x offset.

The format of the GetPixelViewX method is:

    ssize_t GetPixelViewX(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## GetPixelViewY

GetPixelViewY() returns the pixel view y offset.

The format of the GetPixelViewY method is:

    ssize_t GetPixelViewY(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## IsPixelView

IsPixelView() returns MagickTrue if the the parameter is verified as a pixel view container.

The format of the IsPixelView method is:

    MagickBooleanType IsPixelView(const PixelView *pixel_view)

A description of each parameter follows:

pixel_view
  the pixel view.

## MagickClipPathImage

MagickClipPathImage() clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path. Id may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.

The format of the MagickClipPathImage method is:

    MagickBooleanType MagickClipPathImage(MagickWand *wand,
      const char *pathname,const MagickBooleanType inside)

A description of each parameter follows:

wand
  the magick wand.
pathname
  name of clipping path resource. If name is preceded by #, use clipping path numbered by name.
inside
  if non-zero, later operations take effect inside clipping path. Otherwise later operations take effect outside clipping path.

## DrawGetFillAlpha

DrawGetFillAlpha() returns the alpha used when drawing using the fill color or fill texture. Fully opaque is 1.0.

The format of the DrawGetFillAlpha method is:

    double DrawGetFillAlpha(const DrawingWand *wand)

A description of each parameter follows:

wand
  the drawing wand.

## DrawGetStrokeAlpha

DrawGetStrokeAlpha() returns the alpha of stroked object outlines.

The format of the DrawGetStrokeAlpha method is:

    double DrawGetStrokeAlpha(const DrawingWand *wand)

A description of each parameter follows:

wand
  the drawing wand.

## DrawPeekGraphicWand

DrawPeekGraphicWand() returns the current drawing wand.

The format of the PeekDrawingWand method is:

    DrawInfo *DrawPeekGraphicWand(const DrawingWand *wand)

A description of each parameter follows:

wand
  the drawing wand.

## DrawPopGraphicContext

DrawPopGraphicContext() destroys the current drawing wand and returns to the previously pushed drawing wand. Multiple drawing wands may exist. It is an error to attempt to pop more drawing wands than have been pushed, and it is proper form to pop all drawing wands which have been pushed.

The format of the DrawPopGraphicContext method is:

    MagickBooleanType DrawPopGraphicContext(DrawingWand *wand)

A description of each parameter follows:

wand
  the drawing wand.

## DrawPushGraphicContext

DrawPushGraphicContext() clones the current drawing wand to create a new drawing wand. The original drawing wand(s) may be returned to by invoking PopDrawingWand(). The drawing wands are stored on a drawing wand stack. For every Pop there must have already been an equivalent Push.

The format of the DrawPushGraphicContext method is:

    MagickBooleanType DrawPushGraphicContext(DrawingWand *wand)

A description of each parameter follows:

wand
  the drawing wand.

## DrawSetFillAlpha

DrawSetFillAlpha() sets the alpha to use when drawing using the fill color or fill texture. Fully opaque is 1.0.

The format of the DrawSetFillAlpha method is:

    void DrawSetFillAlpha(DrawingWand *wand,const double fill_alpha)

A description of each parameter follows:

wand
  the drawing wand.
fill_alpha
  fill alpha

## DrawSetStrokeAlpha

DrawSetStrokeAlpha() specifies the alpha of stroked object outlines.

The format of the DrawSetStrokeAlpha method is:

    void DrawSetStrokeAlpha(DrawingWand *wand,const double stroke_alpha)

A description of each parameter follows:

wand
  the drawing wand.
stroke_alpha
  stroke alpha. The value 1.0 is opaque.

## MagickColorFloodfillImage

MagickColorFloodfillImage() changes the color value of any pixel that matches target and is an immediate neighbor. If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.

The format of the MagickColorFloodfillImage method is:

    MagickBooleanType MagickColorFloodfillImage(MagickWand *wand,
      const PixelWand *fill,const double fuzz,const PixelWand *bordercolor,
      const ssize_t x,const ssize_t y)

A description of each parameter follows:

wand
  the magick wand.
fill
  the floodfill color pixel wand.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.
bordercolor
  the border color pixel wand.
x,y
  the starting location of the operation.

## MagickDescribeImage

MagickDescribeImage() identifies an image by printing its attributes to the file. Attributes include the image width, height, size, and others.

The format of the MagickDescribeImage method is:

    const char *MagickDescribeImage(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickFlattenImages

MagickFlattenImages() merges a sequence of images. This useful for combining Photoshop layers into a single image.

The format of the MagickFlattenImages method is:

    MagickWand *MagickFlattenImages(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickGetImageAttribute

MagickGetImageAttribute() returns a value associated with the specified property. Use MagickRelinquishMemory() to free the value when you are finished with it.

The format of the MagickGetImageAttribute method is:

    char *MagickGetImageAttribute(MagickWand *wand,const char *property)

A description of each parameter follows:

wand
  the magick wand.
property
  the property.

## MagickGetImageMatte

MagickGetImageMatte() returns MagickTrue if the image has a matte channel otherwise MagickFalse.

The format of the MagickGetImageMatte method is:

    size_t MagickGetImageMatte(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickGetImagePixels

MagickGetImagePixels() extracts pixel data from an image and returns it to you. The method returns MagickTrue on success otherwise MagickFalse if an error is encountered. The data is returned as char, short int, int, ssize_t, float, or double in the order specified by map.

Suppose you want to extract the first scanline of a 640x480 image as character data in red-green-blue order:

    MagickGetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);

The format of the MagickGetImagePixels method is:

    MagickBooleanType MagickGetImagePixels(MagickWand *wand,
      const ssize_t x,const ssize_t y,const size_t columns,
      const size_t rows,const char *map,const StorageType storage,
      void *pixels)

A description of each parameter follows:

wand
  the magick wand.
x, y, columns, rows
  These values define the perimeter of a region of pixels you want to extract.
map
  This string reflects the expected ordering of the pixel array. It can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.
storage
  Define the data type of the pixels. Float and double types are expected to be normalized [0..1] otherwise [0..QuantumRange]. Choose from these types: CharPixel, DoublePixel, FloatPixel, IntegerPixel, LongPixel, QuantumPixel, or ShortPixel.
pixels
  This array of values contain the pixel components as defined by map and type. You must preallocate this array where the expected length varies depending on the values of width, height, map, and type.

## MagickGetImageSize

MagickGetImageSize() returns the image length in bytes.

The format of the MagickGetImageSize method is:

    MagickBooleanType MagickGetImageSize(MagickWand *wand,
      MagickSizeType *length)

A description of each parameter follows:

wand
  the magick wand.
length
  the image length in bytes.

## MagickMapImage

MagickMapImage() replaces the colors of an image with the closest color from a reference image.

The format of the MagickMapImage method is:

    MagickBooleanType MagickMapImage(MagickWand *wand,
      const MagickWand *map_wand,const MagickBooleanType dither)

A description of each parameter follows:

wand
  the magick wand.
map
  the map wand.
dither
  Set this integer value to something other than zero to dither the mapped image.

## MagickMatteFloodfillImage

MagickMatteFloodfillImage() changes the transparency value of any pixel that matches target and is an immediate neighbor. If the method FillToBorderMethod is specified, the transparency value is changed for any neighbor pixel that does not match the bordercolor member of image.

The format of the MagickMatteFloodfillImage method is:

    MagickBooleanType MagickMatteFloodfillImage(MagickWand *wand,
      const double alpha,const double fuzz,const PixelWand *bordercolor,
      const ssize_t x,const ssize_t y)

A description of each parameter follows:

wand
  the magick wand.
alpha
  the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.
bordercolor
  the border color pixel wand.
x,y
  the starting location of the operation.

## MagickMedianFilterImage

MagickMedianFilterImage() applies a digital filter that improves the quality of a noisy image. Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.

The format of the MagickMedianFilterImage method is:

    MagickBooleanType MagickMedianFilterImage(MagickWand *wand,
      const double radius)

A description of each parameter follows:

wand
  the magick wand.
radius
  the radius of the pixel neighborhood.

## MagickMinimumImages

MagickMinimumImages() returns the minimum intensity of an image sequence.

The format of the MagickMinimumImages method is:

    MagickWand *MagickMinimumImages(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickModeImage

MagickModeImage() makes each pixel the 'predominant color' of the neighborhood of the specified radius.

The format of the MagickModeImage method is:

    MagickBooleanType MagickModeImage(MagickWand *wand,
      const double radius)

A description of each parameter follows:

wand
  the magick wand.
radius
  the radius of the pixel neighborhood.

## MagickMosaicImages

MagickMosaicImages() inlays an image sequence to form a single coherent picture. It returns a wand with each image in the sequence composited at the location defined by the page offset of the image.

The format of the MagickMosaicImages method is:

    MagickWand *MagickMosaicImages(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickOpaqueImage

MagickOpaqueImage() changes any pixel that matches color with the color defined by fill.

The format of the MagickOpaqueImage method is:

    MagickBooleanType MagickOpaqueImage(MagickWand *wand,
      const PixelWand *target,const PixelWand *fill,const double fuzz)

A description of each parameter follows:

wand
  the magick wand.
channel
  the channel(s).
target
  Change this target color to the fill color within the image.
fill
  the fill pixel wand.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

## MagickPaintFloodfillImage

MagickPaintFloodfillImage() changes the color value of any pixel that matches target and is an immediate neighbor. If the method FillToBorderMethod is specified, the color value is changed for any neighbor pixel that does not match the bordercolor member of image.

The format of the MagickPaintFloodfillImage method is:

    MagickBooleanType MagickPaintFloodfillImage(MagickWand *wand,
      const ChannelType channel,const PixelWand *fill,const double fuzz,
      const PixelWand *bordercolor,const ssize_t x,const ssize_t y)

A description of each parameter follows:

wand
  the magick wand.
channel
  the channel(s).
fill
  the floodfill color pixel wand.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.
bordercolor
  the border color pixel wand.
x,y
  the starting location of the operation.

## MagickPaintOpaqueImage

MagickPaintOpaqueImage() changes any pixel that matches color with the color defined by fill.

The format of the MagickPaintOpaqueImage method is:

    MagickBooleanType MagickPaintOpaqueImage(MagickWand *wand,
      const PixelWand *target,const PixelWand *fill,const double fuzz)
    MagickBooleanType MagickPaintOpaqueImageChannel(MagickWand *wand,
      const ChannelType channel,const PixelWand *target,
      const PixelWand *fill,const double fuzz)

A description of each parameter follows:

wand
  the magick wand.
channel
  the channel(s).
target
  Change this target color to the fill color within the image.
fill
  the fill pixel wand.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

## MagickPaintTransparentImage

MagickPaintTransparentImage() changes any pixel that matches color with the color defined by fill.

The format of the MagickPaintTransparentImage method is:

    MagickBooleanType MagickPaintTransparentImage(MagickWand *wand,
      const PixelWand *target,const double alpha,const double fuzz)

A description of each parameter follows:

wand
  the magick wand.
target
  Change this target color to specified opacity value within the image.
alpha
  the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

## MagickRadialBlurImage

MagickRadialBlurImage() radial blurs an image.

The format of the MagickRadialBlurImage method is:

    MagickBooleanType MagickRadialBlurImage(MagickWand *wand,
      const double angle)
    MagickBooleanType MagickRadialBlurImageChannel(MagickWand *wand,
      const ChannelType channel,const double angle)

A description of each parameter follows:

wand
  the magick wand.
channel
  the image channel(s).
angle
  the angle of the blur in degrees.

## MagickRecolorImage

MagickRecolorImage() apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets). The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255).

The format of the MagickRecolorImage method is:

    MagickBooleanType MagickRecolorImage(MagickWand *wand,
      const size_t order,const double *color_matrix)

A description of each parameter follows:

wand
  the magick wand.
order
  the number of columns and rows in the color matrix.
color_matrix
  An array of doubles representing the color matrix.

## MagickReduceNoiseImage

MagickReduceNoiseImage() smooths the contours of an image while still preserving edge information. The algorithm works by replacing each pixel with its neighbor closest in value. A neighbor is defined by radius. Use a radius of 0 and ReduceNoise() selects a suitable radius for you.

The format of the MagickReduceNoiseImage method is:

    MagickBooleanType MagickReduceNoiseImage(MagickWand *wand,
      const double radius)

A description of each parameter follows:

wand
  the magick wand.
radius
  the radius of the pixel neighborhood.

## MagickMaximumImages

MagickMaximumImages() returns the maximum intensity of an image sequence.

The format of the MagickMaximumImages method is:

    MagickWand *MagickMaximumImages(MagickWand *wand)

A description of each parameter follows:

wand
  the magick wand.

## MagickSetImageAttribute

MagickSetImageAttribute() associates a property with an image.

The format of the MagickSetImageAttribute method is:

    MagickBooleanType MagickSetImageAttribute(MagickWand *wand,
      const char *property,const char *value)

A description of each parameter follows:

wand
  the magick wand.
property
  the property.
value
  the value.

## MagickSetImageIndex

MagickSetImageIndex() set the current image to the position of the list specified with the index parameter.

The format of the MagickSetImageIndex method is:

    MagickBooleanType MagickSetImageIndex(MagickWand *wand,
      const ssize_t index)

A description of each parameter follows:

wand
  the magick wand.
index
  the scene number.

## MagickTransparentImage

MagickTransparentImage() changes any pixel that matches color with the color defined by fill.

The format of the MagickTransparentImage method is:

    MagickBooleanType MagickTransparentImage(MagickWand *wand,
      const PixelWand *target,const double alpha,const double fuzz)

A description of each parameter follows:

wand
  the magick wand.
target
  Change this target color to specified opacity value within the image.
alpha
  the level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
fuzz
  By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

## MagickRegionOfInterestImage

MagickRegionOfInterestImage() extracts a region of the image and returns it as a new wand.

The format of the MagickRegionOfInterestImage method is:

    MagickWand *MagickRegionOfInterestImage(MagickWand *wand,
      const size_t width,const size_t height,const ssize_t x,
      const ssize_t y)

A description of each parameter follows:

wand
  the magick wand.
width
  the region width.
height
  the region height.
x
  the region x offset.
y
  the region y offset.

## MagickSetImagePixels

MagickSetImagePixels() accepts pixel datand stores it in the image at the location you specify. The method returns MagickFalse on success otherwise MagickTrue if an error is encountered. The pixel data can be either char, short int, int, ssize_t, float, or double in the order specified by map.

Suppose your want to upload the first scanline of a 640x480 image from character data in red-green-blue order:

    MagickSetImagePixels(wand,0,0,640,1,"RGB",CharPixel,pixels);

The format of the MagickSetImagePixels method is:

    MagickBooleanType MagickSetImagePixels(MagickWand *wand,
      const ssize_t x,const ssize_t y,const size_t columns,
      const size_t rows,const char *map,const StorageType storage,
      const void *pixels)

A description of each parameter follows:

wand
  the magick wand.
x, y, columns, rows
  These values define the perimeter of a region of pixels you want to define.
map
  This string reflects the expected ordering of the pixel array. It can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.
storage
  Define the data type of the pixels. Float and double types are expected to be normalized [0..1] otherwise [0..QuantumRange]. Choose from these types: CharPixel, ShortPixel, IntegerPixel, LongPixel, FloatPixel, or DoublePixel.
pixels
  This array of values contain the pixel components as defined by map and type. You must preallocate this array where the expected length varies depending on the values of width, height, map, and type.

## MagickWriteImageBlob

MagickWriteImageBlob() implements direct to memory image formats. It returns the image as a blob and its length. Use MagickSetFormat() to set the format of the returned blob (GIF, JPEG, PNG, etc.).

Use MagickRelinquishMemory() to free the blob when you are done with it.

The format of the MagickWriteImageBlob method is:

    unsigned char *MagickWriteImageBlob(MagickWand *wand,size_t *length)

A description of each parameter follows:

wand
  the magick wand.
length
  the length of the blob.

## NewPixelView

NewPixelView() returns a pixel view required for all other methods in the Pixel View API.

The format of the NewPixelView method is:

    PixelView *NewPixelView(MagickWand *wand)

A description of each parameter follows:

wand
  the wand.

## NewPixelViewRegion

NewPixelViewRegion() returns a pixel view required for all other methods in the Pixel View API.

The format of the NewPixelViewRegion method is:

    PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
      const ssize_t y,const size_t width,const size_t height)

A description of each parameter follows:

wand
  the magick wand.
x,y,columns,rows
  These values define the perimeter of a region of pixel_wands view.

## PixelGetNextRow

PixelGetNextRow() returns the next row as an array of pixel wands from the pixel iterator.

The format of the PixelGetNextRow method is:

    PixelWand **PixelGetNextRow(PixelIterator *iterator,
      size_t *number_wands)

A description of each parameter follows:

iterator
  the pixel iterator.
number_wands
  the number of pixel wands.

## PixelIteratorGetException

PixelIteratorGetException() returns the severity, reason, and description of any error that occurs when using other methods in this API.

The format of the PixelIteratorGetException method is:

    char *PixelIteratorGetException(const Pixeliterator *iterator,
      ExceptionType *severity)

A description of each parameter follows:

iterator
  the pixel iterator.
severity
  the severity of the error is returned here.

## SetPixelViewIterator

SetPixelViewIterator() iterates over the pixel view in parallel and calls your set method for each scanline of the view. The pixel region is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension. The pixels are initiallly undefined and any settings you make in the callback method are automagically synced back to your image.

Use this pragma:

        #pragma omp critical

to define a section of code in your callback set method that must be executed by a single thread at a time.

The format of the SetPixelViewIterator method is:

    MagickBooleanType SetPixelViewIterator(PixelView *destination,
      SetPixelViewMethod set,void *context)

A description of each parameter follows:

destination
  the pixel view.
set
  the set callback method.
context
  the user defined context.

## TransferPixelViewIterator

TransferPixelViewIterator() iterates over two pixel views in parallel and calls your transfer method for each scanline of the view. The source pixel region is not confined to the image canvas-- that is you can include negative offsets or widths or heights that exceed the image dimension. However, the destination pixel view is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted.

Use this pragma:

        #pragma omp critical

to define a section of code in your callback transfer method that must be executed by a single thread at a time.

The format of the TransferPixelViewIterator method is:

    MagickBooleanType TransferPixelViewIterator(PixelView *source,
      PixelView *destination,TransferPixelViewMethod transfer,void *context)

A description of each parameter follows:

source
  the source pixel view.
destination
  the destination pixel view.
transfer
  the transfer callback method.
context
  the user defined context.

## UpdatePixelViewIterator

UpdatePixelViewIterator() iterates over the pixel view in parallel and calls your update method for each scanline of the view. The pixel region is confined to the image canvas-- that is no negative offsets or widths or heights that exceed the image dimension are permitted. Updates to pixels in your callback are automagically synced back to the image.

Use this pragma:

        #pragma omp critical

to define a section of code in your callback update method that must be executed by a single thread at a time.

The format of the UpdatePixelViewIterator method is:

    MagickBooleanType UpdatePixelViewIterator(PixelView *source,
      UpdatePixelViewMethod update,void *context)

A description of each parameter follows:

source
  the source pixel view.
update
  the update callback method.
context
  the user defined context.