module

CrImage::Util::SpriteGenerator

Generate sprite sheets from multiple images.

Provides tools for combining multiple images into optimized sprite sheets. Useful for:

  • Game development (texture atlases)
  • Web optimization (CSS sprites)
  • Animation frames
  • Icon sets

Class methods

generate(images : Array(Image), layout : SpriteLayout = SpriteLayout::Horizontal, spacing : Int32 = 0, background : Color::Color = Color::TRANSPARENT) : SpriteSheet

Generates a sprite sheet from multiple images.

Combines images into a single sheet using the specified layout algorithm. Returns both the combined image and metadata for extracting individual sprites.

Parameters:

  • images : Array of images to combine (must not be empty)
  • layout : Layout strategy (default: Horizontal)
  • spacing : Pixels between sprites (default: 0)
  • background : Background color (default: transparent)

Returns: SpriteSheet with combined image and sprite metadata

Raises: ArgumentError if images array is empty or spacing is negative

Example:

images = [img1, img2, img3]
sheet = CrImage::Util::SpriteGenerator.generate(images)
CrImage::PNG.write("sprites.png", sheet.image)
sheet.sprites.each { |s| puts "Sprite #{s.index}: (#{s.x}, #{s.y})" }
Source