Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jiro4989/pnm
Library for PNM in pure Nim.
https://github.com/jiro4989/pnm
image lib library nim pnm
Last synced: 3 months ago
JSON representation
Library for PNM in pure Nim.
- Host: GitHub
- URL: https://github.com/jiro4989/pnm
- Owner: jiro4989
- Created: 2019-04-19T00:01:51.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-03-20T12:10:03.000Z (over 3 years ago)
- Last Synced: 2024-05-18T15:39:54.582Z (6 months ago)
- Topics: image, lib, library, nim, pnm
- Language: Nim
- Homepage: https://jiro4989.github.io/pnm/pnm.html
- Size: 1.13 MB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.adoc
Awesome Lists containing this project
- awesome-nim - pnm - Library for PNM (Portable Anymap) in Nim. (Multimedia / Images)
README
:toc: left
:sectnums:= pnm
https://en.wikipedia.org/wiki/Netpbm_format[PNM (Portable Anymap)] parser/generator library in pure Nim.
image:https://github.com/jiro4989/pnm/workflows/test/badge.svg["Build Status", link="https://github.com/jiro4989/pnm/actions"]
== Development
nim -v
Nim Compiler Version 0.19.4 [Linux: amd64]
Compiled at 2019-02-01
Copyright (c) 2006-2018 by Andreas Rumpfgit hash: b6d96cafc8bcad1f3d32f2910b25cd11a93f7751
active boot switches: -d:releasenimble -v
nimble v0.9.0 compiled at 2018-10-27 18:10:03
git hash: couldn't determine git hash== Install
[source,bash]
nimble install pnm== Usage
=== Reading PGM file
[source,nim]
----
import pnmblock:
# P2
let p = readPGMFile("tests/out/p2.pgm")
echo pblock:
# P5
let p = readPGMFile("tests/out/p5.pgm")
echo p
----=== Writing PGM file
[source,nim]
----
import pnmlet col = 6
let row = 12
let data = @[
0'u8, 0, 0, 0, 0, 0,
0'u8, 0, 0, 0, 0, 0,
0'u8, 0, 0, 0, 0, 0,
0'u8, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2,
]block:
# P2
let p = newPGM(pgmFileDescriptorP2, col, row, data)
writePGMFile("tests/out/p2.pgm", p)block:
# P5
let p = newPGM(pgmFileDescriptorP5, col, row, data)
writePGMFile("tests/out/p5.pgm", p)
----=== Other examples
See `examples` directory.
Run example code.Generating PBM.
[source,bash]
cd write_pbm
nim c -d:release main.nim
./mainimage:docs/pbm_example.png["PBM example"]
Generating PGM.
[source,bash]
cd write_pgm
nim c -d:release main.nim
./mainimage:docs/pgm_example.png["PGM example"]
Generating PPM.
[source,bash]
cd write_ppm
nim c -d:release main.nim
./mainimage:docs/ppm_example1.png["PPM example1"]
image:docs/ppm_example2.png["PPM example2"]Controling generated PNM files.
[source,bash]
cd read_file
nim c -d:release main.nim
./mainimage:docs/ppm_example1.convert.png["Converted PPM example1"]
== Warning
Available color byte of PGM and PPM is 1 byte (0~255).
== Document
* https://jiro4989.github.io/pnm/pnm.html