Popularity
8.8
Stable
Activity
2.7
-
103
7
21

Programming language: Crystal
License: MIT License
Tags: Misc    

stumpy_png alternatives and similar shards

Based on the "Misc" category.
Alternatively, view stumpy_png alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of stumpy_png or a related project?

Add another 'Misc' Shard

README

stumpy_png

CI

Documentation

Interface

  • StumpyPNG.read(path : String) : Canvas read a PNG image file from a path
  • StumpyPNG.read(io : IO) : Canvas read a PNG image file from any IO object
  • StumpyPNG.write(canvas, path : String, bit_depth: 16, color_type: :rgb_alpha) save a canvas as a PNG image file
  • StumpyPNG.write(canvas, io : IO, bit_depth: 16, color_type: :rgb_alpha) write a canvas as PNG data to any IO object
    • bit_depth is optional, valid values are 8 and 16(default)
    • color_type is optional, valid values are :grayscale, :grayscale_alpha, :rgb and :rgb_alpha(default)
  • StumpyPNG::PNG, helper class to store some state while parsing PNG files
  • Canvas and RGBA from stumpy_core

Usage

Install the stumpy_png shard

  1. shards init
  2. Add the dependency to the shard.yml file yaml ... dependencies: stumpy_png: github: stumpycr/stumpy_png version: "~> 5.0" ...
  3. shards install

Reading

require "stumpy_png"

canvas = StumpyPNG.read("foo.png")
r, g, b = canvas[0, 0].to_rgb8
puts "red=#{r}, green=#{g}, blue=#{b}"

Writing

require "stumpy_png"
include StumpyPNG

canvas = Canvas.new(256, 256)

(0..255).each do |x|
  (0..255).each do |y|
    # RGBA.from_rgb_n(values, bit_depth) is an internal helper method
    # that creates an RGBA object from a rgb triplet with a given bit depth
    color = RGBA.from_rgb_n(x, y, 255, 8)
    canvas[x, y] = color
  end
end

StumpyPNG.write(canvas, "rainbow.png")

[PNG image with a color gradient](examples/rainbow.png)

(See examples/ for more examples)

Reading PNG files

Color Types

  • [x] Grayscale
  • [x] Grayscale + Alpha
  • [x] RGB
  • [x] RGB + Alpha
  • [x] Palette

Filter Types

  • [x] None
  • [x] Sub
  • [x] Up
  • [x] Average
  • [x] Paeth

Interlacing Methods

  • [x] None
  • [x] Adam7

Ancillary Chunks

None are supported right now.

Writing

  • RGB with 8 or 16 bits
  • RGB + Alpha with 8 or 16 bits
  • Grayscale with 8 or 16 bits
  • Grayscale + Alpha with 8 or 16 bits

Troubleshooting

If you run into errors like

/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status

make sure zlib is installed (Installing zlib under ubuntu).

Contributors

Thanks goes to these wonderful people (emoji key):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore --> | Chris Hobbs๐Ÿ’ป | Ary Borenszweig๐Ÿ’ป | Alex Muscar๐Ÿ’ป | Dru Jensen๐Ÿ’ป | kojix2๐Ÿ“– | obskyr๐Ÿ’ป | r00ster๐Ÿ’ป | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | <!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the all-contributors specification. Contributions of any kind welcome!