stumpy_png
stumpy_png
Interface
- StumpyPNG.read(path : String) : Canvasread a PNG image file from a path
- StumpyPNG.read(io : IO) : Canvasread 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_depthis optional, valid values are- 8and- 16(default)
- color_typeis optional, valid values are- :grayscale,- :grayscale_alpha,- :rgband- :rgb_alpha(default)
 
- StumpyPNG::PNG, helper class to store some state while parsing PNG files
- Canvasand- RGBAfrom stumpy_core
Usage
Install the stumpy_png shard
- shards init
- Add the dependency to the shard.ymlfile
...
dependencies:
  stumpy_png:
    github: stumpycr/stumpy_png
    version: "~> 4.4"
...
- 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")

(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
- [ ] tRNS
- [ ] cHRM
- [ ] gAMA
- [ ] iCCP
- [ ] sBIT
- [ ] sRGB
- [ ] tEXt
- [ ] zTXt
- [ ] iTXt
- [ ] bKGD
- [ ] hIST
- [ ] pHYs
- [ ] sPLT
- [ ] tIME
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):
| 
Chris Hobbs
π» | 
Ary Borenszweig
π» | 
Alex Muscar
π» | 
Dru Jensen
π» | 
kojix2
π | 
obskyr
π» | 
r00ster
π» |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
This project follows the all-contributors specification. Contributions of any kind welcome!