class

CrImage::ICO::Icon

Inherits Reference / Object

Represents an ICO file with multiple icon sizes

ICO files can contain multiple images at different resolutions. This class provides convenient access to all images and their metadata.

Example

icon = CrImage::ICO.read_all("favicon.ico")
puts "Contains #{icon.images.size} sizes"

# Get specific sizes
largest = icon.largest
smallest = icon.smallest
icon_32 = icon.find_size(32, 32)

Constructors

new(entries : Array(CrImage::ICO::IconEntry), images : Array(CrImage::Image))
Source

Instance methods

entries

Array of icon entry metadata

Source
entries=(entries : Array(IconEntry))

Array of icon entry metadata

Source
find_size(width : Int32, height : Int32) : CrImage::Image | Nil

Finds the icon closest to the specified dimensions

Returns the image whose total pixel count is closest to the target size. Useful for selecting appropriate icon for display.

icon = CrImage::ICO.read_all("favicon.ico")
# Get icon closest to 40x40 (likely returns 32x32 or 48x48)
best_fit = icon.find_size(40, 40)
Source
images

Array of decoded images corresponding to entries

Source
images=(images : Array(CrImage::Image))

Array of decoded images corresponding to entries

Source
largest

Returns the largest icon by pixel count

icon = CrImage::ICO.read_all("app.ico")
largest = icon.largest # Returns 256x256 if available
Source
smallest

Returns the smallest icon by pixel count

icon = CrImage::ICO.read_all("favicon.ico")
smallest = icon.smallest # Returns 16x16 if available
Source