Image.Shape (image v0.62.0)
View SourceFunctions to render a shape as an image.
The supported shapes match those defined in Scalable Vector Graphics including:
- Rectangle
- Polygon
- Circle
- Ellipse
- Line
Summary
Types
A path is a list of points representing a path, open polygon or closed polygon.
A point is a list of two integers
representing the x and y coordinates
Functions
Creates an image of a circle.
Creates an image of a circle or raises an exception.
Creates an image of a ellipse.
Creates an image of a ellipse or raises an exception.
Creates an image of a line.
Creates a image of a line or raises an exception.
Creates an image of a polygon.
Creates an image of a polygon as a single band image on a transparent background.
Creates a image of a rectangle.
Creates a image of a rectangle or raises and exception.
Returns an image of an n-pointed star that can be composed over other images.
Returns an image of an n-pointed star that can be composed over other images.
Types
Functions
@spec circle(radius :: pos_integer(), options :: Keyword.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Creates an image of a circle.
radiusis the radius of the circle in pixels.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the circle. The default is:none.:stroke_widthis the width of the line used to draw the circle. The default is1px.:stroke_coloris the color used for the outline of the circle. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
{:ok, circle_image}or{:error, reason}
Example
iex> {:ok, circle} = Image.Shape.circle(50, fill_color: :green, stroke_color: :blue)
@spec circle!(radius :: pos_integer(), options :: Keyword.t()) :: Vix.Vips.Image.t() | no_return()
Creates an image of a circle or raises an exception.
radiusis the radius of the circle in pixels.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the circle. The default is:none.:stroke_widthis the width of the line used to draw the circle. The default is1px.:stroke_coloris the color used for the outline of the circle. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
circle_imageorraises an exception.
Example
iex> circle = Image.Shape.circle!(50, fill_color: :green, stroke_color: :blue)
@spec ellipse( x_radius :: pos_integer(), y_radius :: pos_integer(), options :: Keyword.t() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Creates an image of a ellipse.
x_radiusis the radius of the x-aixs of the ellipse in pixels.y_radiusis the radius of the y-aixs of the ellipse in pixels.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the ellipse. The default is:none.:stroke_widthis the width of the line used to draw the ellipse. The default is1px.:stroke_coloris the color used for the outline of the ellipse. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
{:ok, ellipse_image}or{:error, reason}
Examples
iex> {:ok, ellipse} = Image.Shape.ellipse(50, 100, fill_color: :green, stroke_color: :none)
@spec ellipse!( x_radius :: pos_integer(), y_radius :: pos_integer(), options :: Keyword.t() ) :: Vix.Vips.Image.t() | no_return()
Creates an image of a ellipse or raises an exception.
x_radiusis the radius of the x-aixs of the ellipse in pixels.y_radiusis the radius of the y-aixs of the ellipse in pixels.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the ellipse. The default is:none.:stroke_widthis the width of the line used to draw the rectangle. The default is1px.:stroke_coloris the color used for the outline of the polygon. The default is:black:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
ellipse_imageorraises an exception.
Example
iex> ellipse = Image.Shape.ellipse!(50, 100, fill_color: :green, stroke_color: :none)
@spec line( x1 :: pos_integer(), y1 :: pos_integer(), x2 :: pos_integer(), y2 :: pos_integer(), options :: Keyword.t() ) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Creates an image of a line.
x1Defines the x-axis coordinate of the line starting point in pixels.y1Defines the y-axis coordinate of the line starting point in pixels.x2Defines the x-axis coordinate of the line ending point in pixels.y2Defines the y-axis coordinate of the line ending point in pixels.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the line. The default is:none.:stroke_widthis the width of the line used to draw the line. The default is1px.:stroke_coloris the color used for the outline of the line. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
{:ok, line_image}or{:error, reason}
Examples
iex> {:ok, line} = Image.Shape.line(5, 5, 50, 50, stroke_width: 10, stroke_color: :white)
@spec line!( x1 :: pos_integer(), y1 :: pos_integer(), x2 :: pos_integer(), y2 :: pos_integer(), options :: Keyword.t() ) :: Vix.Vips.Image.t() | no_return()
Creates a image of a line or raises an exception.
x1Defines the x-axis coordinate of the line starting point in pixels.y1Defines the y-axis coordinate of the line starting point in pixels.x2Defines the x-axis coordinate of the line ending point in pixels.y2Defines the y-axis coordinate of the line ending point in pixels.optionsis aKeyword.t/0list of options.
Options
:stroke_widthis the width of the line used to draw the rectangle. The default is1px.:stroke_coloris the color used for the outline of the polygon. The default is:black:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Returns
line_imageorraises an exception.
Example
iex> line = Image.Shape.line!(5, 5, 50, 50, stroke_width: 10, stroke_color: :white)
@spec polygon(points :: path(), options :: Keyword.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
@spec polygon(sides :: pos_integer(), options :: Keyword.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Creates an image of a polygon.
Arguments
pointsdefines the points of the polygon. The origin is the top left of the image with a positivexvalue moving from right to left and a positiveyvalue moving from top to bottom. The points can be an SVG point string or a "list of lists" of the form[[x1, y1], [x2, y2], ...]wherex1andy1are integers.pointscan also be a positive integer >= 3 which indicates that annsided polygon will be generated. In this case the options:rotationand:radiusare also applicable.optionsis aKeyword.t/0list of options.
Options
:widthis the width of the canvas onto which the polygon is drawn. The default is500pixels.:heightis the height of the canvas onto which the polygon is drawn. The default is500pixels.:fill_coloris the color used to fill in the polygon. The default is:none.:stroke_widthis the width of the line used to draw the polygon. The default is1px.:stroke_coloris the color used for the outline of the polygon. The default is:black:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.:rotationis the number of degrees to rotate the axis of a generated n-sided polygon. This option is only valid ifpointsis an integer >= 3. The default is180.:radiusindicates the radius in pixels of a generated n-sided polygon. The default is100.
Notes
The polygon points are scaled to fit the canvas size defined by
:widthand:heightThis means that the resulting image will fill the canvas. This is useful for composing images. Define the canvas to be the size intended to be composed into a base image and the polygon will be scaled to fit.Colors may be any valid CSS color name or a six hexadecimal digit string prefixed with
#. For example#FF00FFfor the color "Fuchsia".
Returns
{:ok, image}or{:error, reason}
Examples
@spec polygon!(points :: path(), options :: Keyword.t()) :: Vix.Vips.Image.t() | no_return()
Creates an image of a polygon as a single band image on a transparent background.
Arguments
pointsdefines the points of the polygon. The origin is the top left of the image with a positivexvalue moving from right to left and a positiveyvalue moving from top to bottom. The points can be an SVG point string or a "list of lists" of the form[[x1, y1], [x2, y2], ...]wherex1andy1are integers.optionsis aKeyword.t/0list of options.
Options
:widthis the width of the canvas onto which the polygon is drawn. The default is500pixels.:heightis the width of the canvas onto which the polygon is drawn. The default is500pixels.:fill_coloris the color used to fill in the polygon. The default is:none.:stroke_widthis the width of the line used to draw the polygon. The default is1px.:stroke_coloris the color used for the outline of the polygon. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.
Notes
The polygon points are scaled to fit the canvas size defined by
:widthand:heightThis means that the resulting image will fill the canvas. This is useful for composing images. Define the canvas to be the size intended to be composed into a base image and the polygon will be scaled to fit.Colors may be any valid CSS color name or a six hexadecimal digit string prefixed with
#. For example#FF00FFfor the color "Fuchsia".
Returns
imageorraises an exception
Examples
@spec rect(width :: pos_integer(), height :: pos_integer(), options :: Keyword.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Creates a image of a rectangle.
widthis the number of pixels wide.heightis the number of pixels high.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the rectangle. The default is:none.:stroke_widthis the width of the line used to draw the rectangle. The default is1px.:stroke_coloris the color used for the outline of the rectangle. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.:rotationis the number of degrees to rotate the axis of a generated rectangle.
Returns
{:ok, rectangle_image}or{:error, reason}
Example
iex> {:ok, rectangle} = Image.Shape.rect(50, 100, fill_color: :red, stroke_color: :yellow)
@spec rect!(width :: pos_integer(), height :: pos_integer(), options :: Keyword.t()) :: Vix.Vips.Image.t() | no_return()
Creates a image of a rectangle or raises and exception.
widthis the number of pixels wide.heightis the number of pixels high.optionsis aKeyword.t/0list of options.
Options
:fill_coloris the color used to fill in the rectangle. The default is:none.:stroke_widthis the width of the line used to draw the rectangle. The default is1px.:stroke_coloris the color used for the outline of the rectangle. The default is:black.:opacityis the opacity as a float between0.0and1.0where0.0is completely transparent and1.0is completely opaque. The default is0.7.:rotationis the number of degrees to rotate the axis of a generated rectangle.
Returns
rectangle_imageorraises an exception.
Examples
iex> rectangle = Image.Shape.rect!(50, 100, fill_color: :red, stroke_color: :yellow)
@spec star(points :: pos_integer(), options :: Keyword.t()) :: {:ok, Vix.Vips.Image.t()} | {:error, Image.error_message()}
Returns an image of an n-pointed star that can be composed over other images.
Arguments
pointsis an integer number of points on the star.pointsmust be >= 3. The default is5.optionsis aKeyword.t/0list of options.
Options
:inner_radiusis the size of the inner radius. The default is60.:outer_radiusis the size of the outer radius. The default is150.:rotationis the angle in degrees of rotation applied to the points. The default is0.Any remaining options are passed to
Image.Shape.polygon/2.
Returns
{:ok, image}or{:error, reason}
Examples
iex> {:ok, star} = Image.Shape.star
iex> {:ok, star} = Image.Shape.star(5, rotation: 90, fill_color: :red, stroke_color: :green)
@spec star!(points :: pos_integer(), options :: Keyword.t()) :: Vix.Vips.Image.t() | no_return()
Returns an image of an n-pointed star that can be composed over other images.
Arguments
pointsis an integer number of points on the star.pointsmust be >= 3. The default is5.optionsis aKeyword.t/0list of options.
Options
:inner_radiusis the size of the inner radius. The default is60.:outer_radiusis the size of the outer radius. The default is150.:rotationis the angle in degrees of rotation applied to the points. The default is0.Any remaining options are passed to
Image.Shape.polygon/2.
Returns
imageorraises an exception.
Examples
iex> star = Image.Shape.star!
iex> star = Image.Shape.star!(5, rotation: 90, fill_color: :red, stroke_color: :green)