# `Linocut.Png`
[🔗](https://github.com/jaman/cauldron/blob/v0.1.3/linocut/lib/linocut/png.ex#L1)

Reads a PNG into a `FrenchCurve.Raster`.

    {:ok, raster} = Linocut.Png.decode(File.read!("ship.png"))

Greyscale, greyscale with alpha, truecolour, truecolour with alpha and palette images
are read, at every bit depth; sixteen-bit channels keep their high byte. A `tRNS`
chunk gives palette entries and colour keys their alpha. Interlaced images are
refused with `{:error, :interlaced}`; anything that is not a PNG with
`{:error, :not_png}`.

# `decode`

```elixir
@spec decode(binary()) :: {:ok, FrenchCurve.Raster.t()} | {:error, term()}
```

The raster in `bytes`, or why it could not be read.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
