CrImage::PNG::Reader
Inherits IO / Reference / Object
PNG image format decoder
Implements PNG (Portable Network Graphics) decoding according to the PNG specification. Supports all color types, bit depths, interlacing, and transparency modes.
Class methods
read and decode the configurations like color model, dimensions and does not decode entire image. This returns CrImage::Config instead.
Instance methods
Reads at most slice.size bytes from this IO into slice.
Returns the number of bytes read, which is 0 if and only if there is no
more data to read (so checking for 0 is the way to detect end of file).
io = IO::Memory.new "hello"
slice = Bytes.new(4)
io.read(slice) # => 4
slice # => Bytes[104, 101, 108, 108]
io.read(slice) # => 1
slice # => Bytes[111, 101, 108, 108]
io.read(slice) # => 0
Reads an instance of the given type from this IO using the specified format.
This ends up invoking type.from_io(self, format), so any type defining a
from_io(io : IO, format : IO::ByteFormat = IO::ByteFormat::SystemEndian)
method can be read in this way.
See Int.from_io and Float.from_io.
io = IO::Memory.new
io.puts "\u{4}\u{3}\u{2}\u{1}"
io.rewind
io.read_bytes(Int32, IO::ByteFormat::LittleEndian) # => 0x01020304
Writes the contents of slice into this IO.
io = IO::Memory.new
slice = Bytes.new(4) { |i| ('a'.ord + i).to_u8 }
io.write(slice)
io.to_s # => "abcd"