module ChunkyPNG::Canvas::PNGEncoding

def to_datastream(constraints = {})

Other tags:
    See: ChunkyPNG::Canvas::PNGEncoding#determine_png_encoding -

Returns:
  • (ChunkyPNG::Datastream) - The PNG datastream containing the encoded canvas.

Parameters:
  • constraints (Hash) -- The constraints to use when encoding the canvas.
def to_datastream(constraints = {})
  encoding = determine_png_encoding(constraints)
  
  ds = Datastream.new
  ds.header_chunk = Chunk::Header.new(:width => width, :height => height, 
      :color => encoding[:color_mode], :interlace => encoding[:interlace])
  
  if encoding[:color_mode] == ChunkyPNG::COLOR_INDEXED
    ds.palette_chunk      = encoding_palette.to_plte_chunk
    ds.transparency_chunk = encoding_palette.to_trns_chunk unless encoding_palette.opaque?
  end
  
  data           = encode_png_pixelstream(encoding[:color_mode], encoding[:interlace])
  ds.data_chunks = Chunk::ImageData.split_in_chunks(data)
  ds.end_chunk   = Chunk::End.new
  return ds
end