Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stumpycr/stumpy_core
Core components for working with images
https://github.com/stumpycr/stumpy_core
computer-graphics crystal image-processing
Last synced: about 2 months ago
JSON representation
Core components for working with images
- Host: GitHub
- URL: https://github.com/stumpycr/stumpy_core
- Owner: stumpycr
- License: mit
- Created: 2016-09-19T21:44:39.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-04T18:24:45.000Z (about 1 year ago)
- Last Synced: 2023-12-04T19:46:08.389Z (about 1 year ago)
- Topics: computer-graphics, crystal, image-processing
- Language: Crystal
- Homepage:
- Size: 229 KB
- Stars: 30
- Watchers: 5
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# stumpy_core
[Documentation](https://docs.leonrische.me/stumpy_core/)
## Usage
This library is not very useful on its own
but there are a few other libraries
that allow creating a canvas from an image file
or saving one to an image file.*
*```crystal
require "stumpy_core"include StumpyCore
rainbow = 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)
rainbow[x, y] = color
end
end# It is also possible to provide a background color,
# the default is transparent black `RGBA.new(0, 0, 0, 0)`
white = Canvas.new(256, 256, RGBA.from_hex("#ffffff"))# If the colors for all pixels are already known when creating the canvas,
# the block syntax can be used to simplify the code:rainbow2 = Canvas.new(256, 256) { |x, y| RGBA.from_rgb_n(x, y, 255, 8) }
checkerboard = Canvas.new(256, 256) do |x, y|
if ((x / 32) + (y / 32)).odd?
RGBA.from_hex("#ffffff")
else
RGBA.from_hex("#000000")
end
endspectrum = Canvas.new(361, 101) { |x, y| RGBA.from_hsl(x, 100, y) }
spectrum2 = Canvas.new(361, 101) { |x, y| RGBA.from_hsba([x, 100, y], 1) }
```![rainbow image](images/rainbow.png)
![checkerboard image](images/checkerboard.png)
![spectrum image](images/spectrum.png)
![spectrum2 image](images/hsv-spectrum.png)## Contributors
Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
| [
Leon](https://github.com/l3kn)
[💻](https://github.com/l3kn/stumpy_core/commits?author=l3kn "Code") | [
Ian Rash](http://broken-kami.tumblr.com)
[💻](https://github.com/l3kn/stumpy_core/commits?author=redcodefinal "Code") | [
Sam](https://github.com/Demonstrandum)
[💻](https://github.com/l3kn/stumpy_core/commits?author=Demonstrandum "Code") | [
reiswindy](https://github.com/reiswindy)
[📖](https://github.com/l3kn/stumpy_core/commits?author=reiswindy "Documentation") |
| :---: | :---: | :---: | :---: |This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!