View Source Image.Draw (image v0.55.2)

Functions to draw directly on a mutable image.

Note that while the functions in this module mutate an image, the mutations are performed on a copy of the image so no harm will come to other functions maintaining a reference to the original image.

Summary

Types

Bounding box returned from Image.Draw.flood/4

Functions

Draw a circle on a mutable image.

Draw a circle on a mutable image returning the mutated image or raises an exception.

Flood-fill image with color, starting at position top, left.

Flood-fill image with color, starting at position top, left or raise an exception.

Draw one image over the top of a mutable image.

Draw one image over the top of a mutable image or raises an exception.

Validates acceptable circle dimensions

Validate a point location on an image

Draw a line on a mutable image.

Draw a line on a mutable image returning the mutated image or raising an exception.

Draw mask on the image.

Draw a point on a mutable image.

Draw a point on a mutable image returning the mutated image or raising an exception.

Draw a rectangle on a mutable image.

Draw a rectangle on a mutable image and returns the mutated image or raises an exception.

Types

@type box() :: %{
  height: non_neg_integer(),
  width: non_neg_integer(),
  top: non_neg_integer(),
  left: non_neg_integer()
}

Bounding box returned from Image.Draw.flood/4

Functions

Link to this function

circle(image, cx, cy, radius, options \\ [])

View Source (since 0.7.0)

Draw a circle on a mutable image.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • cx is the 0-based offset from the left edge of the image indicating where the center of the circle will be localed.

  • cy is the 0-based offset from the top edge of the image indicating where the center of the circle will be localed.

  • radius is the radius of the drawn circle.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

  • :fill is a boolean indicating whether the rectangle is to be filled with :color. The default is true.

  • :stroke_width indicates the width in pixels of the stroke that forms the rectangle. The default is 1. Values greater than 1 will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. If fill: true is set then this options is ignored.

Returns

  • {:ok, image} where image is the same type as that passed as an argument to the function.

  • or {:error, reason}

Link to this function

circle!(image, cx, cy, radius, options \\ [])

View Source (since 0.17.0)

Draw a circle on a mutable image returning the mutated image or raises an exception.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • cx is the 0-based offset from the left edge of the image indicating where the center of the circle will be localed.

  • cy is the 0-based offset from the top edge of the image indicating where the center of the circle will be localed.

  • radius is the radius of the drawn circle.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

  • :fill is a boolean indicating whether the rectangle is to be filled with :color. The default is true.

Returns

  • image where image is the same type as that passed as an argument to the function or

  • raises an exception.

Link to this function

flood(image, left, top, options \\ [])

View Source (since 0.7.0)

Flood-fill image with color, starting at position top, left.

The filled area is bounded by pixels that are equal to the :colour. That is, it searches for pixels enclosed by an edge of :color.

If :equal is true, it instead searches for pixels which are equal to the start point and fills them with :color.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the flood will be drawn.

  • top is the 0-based offset from the top edge of the image where the flood will drawn.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • {:ok, {image, height, width, top, left} where image is the same type as that passed as an argument to the function. height and width represent the dimensions of the flood fill in pixels. top and left are the 0-based offsets from the top and left location respectively of the flood area.

  • or {:error, reason}.

Link to this function

flood!(image, left, top, options \\ [])

View Source (since 0.24.0)

Flood-fill image with color, starting at position top, left or raise an exception.

The filled area is bounded by pixels that are equal to the :colour. That is, it searches for pixels enclosed by an edge of :color.

If :equal is true, it instead searches for pixels which are equal to the start point and fills them with :color.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the flood will be drawn.

  • top is the 0-based offset from the top edge of the image where the flood will drawn.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • image where image is the same type as that passed as an argument to the function or

  • raises an exception.

Link to this function

image(image, sub_image, top, left, options \\ [])

View Source (since 0.7.0)

Draw one image over the top of a mutable image.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • sub_image is any t:Vimage.t/0 that is drawn on top of image.

  • left is the 0-based offset from the left edge of the image where the sub-image will be drawn.

  • top is the 0-based offset from the top edge of the image where the sub-image will be drawn.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • {:ok, image} where image is the same type as that passed as an argument to the function.

  • or {:error, reason}

Link to this function

image!(image, sub_image, top, left, options \\ [])

View Source (since 0.25.0)

Draw one image over the top of a mutable image or raises an exception.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • sub_image is any t:Vimage.t/0 that is drawn on top of image.

  • left is the 0-based offset from the left edge of the image where the sub-image will be drawn.

  • top is the 0-based offset from the top edge of the image where the sub-image will be drawn.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • image where image is the same type as that passed as an argument to the function.

  • raises an exception.

Link to this macro

is_circle(cx, cy, radius)

View Source (macro)

Validates acceptable circle dimensions

Link to this macro

is_point(left, top)

View Source (macro)

Validate a point location on an image

Link to this function

line(image, x1, y1, x2, y2, options \\ [])

View Source (since 0.7.0)

Draw a line on a mutable image.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • x1, y1 are the 0-based offsets from the left and top accordingly indicating the point at the start of the line.

  • x2, y2 are the 0-based offsets from the left and top accordingly indicating the point at the end of the line.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • {:ok, image} where image is the same type as that passed as an argument to the function.

  • or {:error, reason}

Link to this function

line!(image, x1, y1, x2, y2, options \\ [])

View Source (since 0.17.0)

Draw a line on a mutable image returning the mutated image or raising an exception.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • x1, y1 are the 0-based offsets from the left and top accordingly indicating the point at the start of the line.

  • x2, y2 are the 0-based offsets from the left and top accordingly indicating the point at the end of the line.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • image where image is the same type as that passed as an argument to the function or

  • raises an exception.

Link to this function

mask(image, mask, x, y, options \\ [])

View Source (since 0.7.0)

Draw mask on the image.

Mask is a monochrome 8-bit image with the values of 0 or 255 for transparent and any other value as a color to be blended into the base image.

Link to this function

point(image, left, top, options \\ [])

View Source (since 0.7.0)

Draw a point on a mutable image.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the point will be drawn.

  • top is the 0-based offset from the top edge of the image where the point will be drawn.

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

Returns

  • {:ok, image} where image is the same type as that passed as an argument to the function.

  • or {:error, reason}

Link to this function

point!(image, left, top, options)

View Source (since 0.17.0)

Draw a point on a mutable image returning the mutated image or raising an exception.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the point will be drawn.

  • top is the 0-based offset from the top edge of the image where the point will be drawn.

  • options is a keyword list of options. The default is color: :black. See the options for Image.Draw.point/4.

Returns

  • image where image is the same type as that passed as an argument to the function or

  • raises an exception.

Link to this function

rect(image, left, top, width, height, options \\ [])

View Source (since 0.7.0)

Draw a rectangle on a mutable image.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the rectangle will be drawn.

  • top is the 0-based offset from the top edge of the image where the rectangle will be drawn.

  • width is the width of the rectangle

  • height is the height of the rectangle

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

  • :fill is a boolean indicating whether the rectangle is to be filled with :color. The default is true.

  • :stroke_width indicates the width in pixels of the stroke that forms the rectangle. The default is 1. Values greater than 1 will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. If fill: true is set then this options is ignored.

Returns

  • {:ok, image} where image is the same type as that passed as an argument to the function or

  • {:error, reason}.

Link to this function

rect!(image, left, top, width, height, options \\ [])

View Source (since 0.17.0)

Draw a rectangle on a mutable image and returns the mutated image or raises an exception.

Arguments

  • image is any t:Vimage.t/0 or a t:MutableImage.t/0 upon which the rectangle will be drawn. If image is a t:MutableImage.t/0 it will be mutated directly. If image is a t:Vimage.t/0 it will be copied to a t:MutableImage.t/0 and then mutated.

  • left is the 0-based offset from the left edge of the image where the rectangle will be drawn.

  • top is the 0-based offset from the top edge of the image where the rectangle will be drawn.

  • width is the width of the rectangle

  • height is the height of the rectangle

  • options is a keyword list of options. The default is color: :black.

Options

  • :color defines the color of the point. This can be specified as a single integer which will be applied to all bands, or a list of integers representing the color for each band. The color can also be supplied as a CSS color name as a string or atom. For example: :misty_rose. Lastly, it can also be supplied as a hex string of the form #rrggbb. See Image.Color.color_map/0 and Image.Color.rgb_color/1.

  • :fill is a boolean indicating whether the rectangle is to be filled with :color. The default is true.

  • :stroke_width indicates the width in pixels of the stroke that forms the rectangle. The default is 1. Values greater than 1 will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. If fill: true is set then this options is ignored.

Returns

  • image where image is the same type as that passed as an argument to the function or

  • raises an exception.

Link to this function

smudge(image, left, top, width, height, options \\ [])

View Source (since 0.7.0)

Smudge a section of image .

Each pixel in the area left , top , width , height is replaced by the average of the surrounding 3x3 pixels.