Source code for toyplot.png

# Copyright 2014, Sandia Corporation. Under the terms of Contract
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain
# rights in this software.

"""Functions to render PNG images."""



import toyplot.require
import toyplot.reportlab.png as implementation


[docs]def render(canvas, fobj=None, width=None, height=None, scale=None): """Render the PNG bitmap representation of a canvas. By default, canvas dimensions in CSS pixels are mapped directly to pixels in the output PNG image. Use one of `width`, `height`, or `scale` to override this behavior. Parameters ---------- canvas: :class:`toyplot.canvas.Canvas` Canvas to be rendered. fobj: file-like object or string, optional The file to write. Use a string filepath to write data directly to disk. If `None` (the default), the PNG data will be returned to the caller instead. width: number, optional Specify the width of the output image in pixels. height: number, optional Specify the height of the output image in pixels. scale: number, optional Ratio of output image pixels to `canvas` pixels. Returns ------- png: :class:`bytes` containing PNG image data, or `None` Returns `None` if the caller specifies the `fobj` parameter, returns the PNG image data otherwise. Notes ----- The output PNG is rendered using :func:`toyplot.reportlab.png.render()`. This is subject to change. """ canvas = toyplot.require.instance(canvas, toyplot.canvas.Canvas) return implementation.render(canvas, fobj, width, height, scale)
[docs]def render_frames(canvas, width=None, height=None, scale=None): """Render a canvas as a sequence of PNG images. By default, canvas dimensions in CSS pixels are mapped directly to pixels in the output PNG images. Use one of `width`, `height`, or `scale` to override this behavior. Parameters ---------- canvas: :class:`toyplot.canvas.Canvas` Canvas to be rendered. width: number, optional Specify the width of the output image in pixels. height: number, optional Specify the height of the output image in pixels. scale: number, optional Ratio of output image pixels to `canvas` pixels. Returns ------- frames: Sequence of :class:`bytes` objects containing PNG image data. The caller must iterate over the returned frames and is responsible for all subsequent processing, including disk I/O, video compression, etc. Notes ----- The output PNG images are rendered using :func:`toyplot.reportlab.png.render_frames()`. This is subject to change. Examples -------- >>> for frame, png in enumerate(toyplot.png.render_frames(canvas)): ... open("frame-%s.png" % frame, "wb").write(png) """ canvas = toyplot.require.instance(canvas, toyplot.canvas.Canvas) return implementation.render_frames(canvas, width, height, scale)