Pure MoonBit image codecs and icon container encoders.
Dependencies
moon add Nanaloveyuki/imageimport {
"Nanaloveyuki/image",
}fn normalize_icon(source : Bytes) -> Bytes raise @image.ImageError {
let image = @image.decode_png(source)
let square = @image.square_image(image)
let resized = @image.resize_lanczos3(square, 256, 256)
@image.encode_png(resized, compression_level=6)
}fn icon_artifacts(source : Bytes) -> (Bytes, Bytes, Array[@image.PngVariant]) raise @image.ImageError {
let image = @image.square_image(@image.decode_png(source))
let pngs = @image.encode_png_sizes(image, [16, 32, 64, 128, 256])
let ico = @image.encode_ico(image)
let icns = @image.encode_icns(image)
(ico, icns, pngs)
}pub(all) struct DecodeLimits {
max_input_bytes : Int
max_dimension : Int
max_pixels : Int
}fn encode_icns(image : Image, sizes? : Array[Int], compression_level? : Int) -> Bytes raise ImageErrorfn encode_ico(image : Image, sizes? : Array[Int], compression_level? : Int) -> Bytes raise ImageErrorfn encode_png_sizes(image : Image, sizes : Array[Int], compression_level? : Int) -> Array[PngVariant] raise ImageErrorPure MoonBit image codecs and icon container encoders.
Dependencies