techkaczynski.dev / code

summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authortech kaczynski <tk@techkaczynski.dev>2026-09-24 22:13:10 +1000
committertech kaczynski <tk@techkaczynski.dev>2026-09-24 22:13:10 +1000
commit65b685a20dd90c9e6b9dd98361e2b8e1f61069fd (patch)
tree4b808b2ef121dbc3c016023a8d628506a3cb24ba /README.md
initial commit.main
Diffstat (limited to 'README.md')
-rw-r--r--README.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4eca2e5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,32 @@
+# PNG to QOI conversion utility
+
+A simple utility which recursively converts PNG images to the [QOI](https://qoiformat.org/) image format. I used this project to learn about writing multi-threaded non-blocking io code in the [Odin](https://odin-lang.org/) programming language.
+
+## Features
+
+* Converts PNG data to match QOI data layout automatically.
+* Very fast multi-threaded IO (250mb of 16bit PNG data converts in less than 2s on my 2015 Dell XPS 15).
+
+## Usage
+
+Run the executable and it will find every .png file in its own directory plus sub-directories and save a .qoi copy.
+
+Alternatively you can pass a specific directory as input either by the command line or by clicking and dragging a directory onto the executable itself and it will only convert the .png files within that directory/subdirectories.
+
+## Building
+Requires an odin compiler and core packages.
+
+To build, simply run:
+```sh
+odin build .
+```
+
+Or for a highly optimised build that executes orders of magnitude faster you could run this:
+```sh
+odin build . -o:aggressive -linker:lld -lto:thin-files -microarch:native -out:png_to_qoi_util.exe
+```
+
+## Notes
+* I didn't bother adding a replace file argument or support for other image formats, it just does exactly what I need for now.
+* Clicking and dragging a directory onto the executable works on windows but might not work on other platforms/file managers.
+* GPLv3 Licensed.