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
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.
Smudge a section of image .
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
@spec circle( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.circle() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Draw a circle on a mutable image.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.:fill
is a boolean indicating whether the rectangle is to be filled with:color
. The default istrue
.:stroke_width
indicates the width in pixels of the stroke that forms the rectangle. The default is1
. Values greater than1
will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. Iffill: true
is set then this options is ignored.
Returns
{:ok, image}
whereimage
is the same type as that passed as an argument to the function.or
{:error, reason}
@spec circle!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.circle() ) :: Vix.Vips.Image.t() | Vix.Vips.MutableImage.t() | no_return()
Draw a circle on a mutable image returning the mutated image or raises an exception.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.:fill
is a boolean indicating whether the rectangle is to be filled with:color
. The default istrue
.
Returns
image
whereimage
is the same type as that passed as an argument to the function orraises an exception.
@spec flood( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.flood() ) :: {:ok, {Vix.Vips.Image.t(), box()}} | {:error, Image.error_message()}
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 anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
{:ok, {image, height, width, top, left}
whereimage
is the same type as that passed as an argument to the function.height
andwidth
represent the dimensions of the flood fill in pixels.top
andleft
are the 0-based offsets from the top and left location respectively of the flood area.or
{:error, reason}
.
@spec flood!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.flood() ) :: Vix.Vips.Image.t() | no_return()
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 anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
image
whereimage
is the same type as that passed as an argument to the function orraises an exception.
@spec image( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), Vix.Vips.Image.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.image() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Draw one image over the top of a mutable image.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at:MutableImage.t/0
and then mutated.sub_image
is anyt:Vimage.t/0
that is drawn on top ofimage
.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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
{:ok, image}
whereimage
is the same type as that passed as an argument to the function.or
{:error, reason}
@spec image!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), Vix.Vips.Image.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.image() ) :: Vix.Vips.Image.t() | Vix.Vips.MutableImage.t() | no_return()
Draw one image over the top of a mutable image or raises an exception.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at:MutableImage.t/0
and then mutated.sub_image
is anyt:Vimage.t/0
that is drawn on top ofimage
.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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
image
whereimage
is the same type as that passed as an argument to the function.raises an exception.
Validates acceptable circle dimensions
Validate a point location on an image
@spec line( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.line() ) :: {:ok, Vix.Vips.Image.t() | Vix.Vips.MutableImage.t()} | {:error, Image.error_message()}
Draw a line on a mutable image.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at:MutableImage.t/0
and then mutated.x1
,y1
are the 0-based offsets from theleft
andtop
accordingly indicating the point at the start of the line.x2
,y2
are the 0-based offsets from theleft
andtop
accordingly indicating the point at the end of the line.options
is a keyword list of options. The default iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
{:ok, image}
whereimage
is the same type as that passed as an argument to the function.or
{:error, reason}
@spec line!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.line() ) :: Vix.Vips.Image.t() | Vix.Vips.MutableImage.t() | no_return()
Draw a line on a mutable image returning the mutated image or raising an exception.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at:MutableImage.t/0
and then mutated.x1
,y1
are the 0-based offsets from theleft
andtop
accordingly indicating the point at the start of the line.x2
,y2
are the 0-based offsets from theleft
andtop
accordingly indicating the point at the end of the line.options
is a keyword list of options. The default iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
image
whereimage
is the same type as that passed as an argument to the function orraises an exception.
@spec mask( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), Vix.Vips.Image.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.mask() ) :: {:ok, {Vix.Vips.Image.t(), height: integer(), width: integer(), top: integer(), left: integer()}} | {:error, Image.error_message()}
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.
@spec point( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.point() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Draw a point on a mutable image.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.
Returns
{:ok, image}
whereimage
is the same type as that passed as an argument to the function.or
{:error, reason}
@spec point!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), Image.Options.Draw.point() ) :: Vix.Vips.Image.t() | Vix.Vips.MutableImage.t() | no_return()
Draw a point on a mutable image returning the mutated image or raising an exception.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 iscolor: :black
. See the options forImage.Draw.point/4
.
Returns
image
whereimage
is the same type as that passed as an argument to the function orraises an exception.
rect(image, left, top, width, height, options \\ [])
View Source (since 0.7.0)@spec rect( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), pos_integer(), pos_integer(), Image.Options.Draw.rect() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Draw a rectangle on a mutable image.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 rectangleheight
is the height of the rectangleoptions
is a keyword list of options. The default iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.:fill
is a boolean indicating whether the rectangle is to be filled with:color
. The default istrue
.:stroke_width
indicates the width in pixels of the stroke that forms the rectangle. The default is1
. Values greater than1
will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. Iffill: true
is set then this options is ignored.
Returns
{:ok, image}
whereimage
is the same type as that passed as an argument to the function or{:error, reason}
.
rect!(image, left, top, width, height, options \\ [])
View Source (since 0.17.0)@spec rect!( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), pos_integer(), pos_integer(), Image.Options.Draw.rect() ) :: Vix.Vips.Image.t() | Vix.Vips.MutableImage.t() | no_return()
Draw a rectangle on a mutable image and returns the mutated image or raises an exception.
Arguments
image
is anyt:Vimage.t/0
or at:MutableImage.t/0
upon which the rectangle will be drawn. Ifimage
is at:MutableImage.t/0
it will be mutated directly. Ifimage
is at:Vimage.t/0
it will be copied to at: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 rectangleheight
is the height of the rectangleoptions
is a keyword list of options. The default iscolor: :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
. SeeImage.Color.color_map/0
andImage.Color.rgb_color/1
.:fill
is a boolean indicating whether the rectangle is to be filled with:color
. The default istrue
.:stroke_width
indicates the width in pixels of the stroke that forms the rectangle. The default is1
. Values greater than1
will have a negative performance impact since the rectangle will be draw as 4 filled rectangles forming each of the four sides. Iffill: true
is set then this options is ignored.
Returns
image
whereimage
is the same type as that passed as an argument to the function orraises an exception.
smudge(image, left, top, width, height, options \\ [])
View Source (since 0.7.0)@spec smudge( Vix.Vips.Image.t() | Vix.Vips.MutableImage.t(), non_neg_integer(), non_neg_integer(), pos_integer(), pos_integer(), Image.Options.Draw.smudge() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Smudge a section of image .
Each pixel in the area left , top , width , height is replaced by the average of the surrounding 3x3 pixels.