hypnic-functions is code that I've written for the manipulation of images using custom user-defined operations. The project started from a conversation I had with a friend who creates digital glitch-art; being familiar with Python's PIL library it led me to wonder about the ways that I could manipulate an image's pixels programmatically. This code has a wide range of applications, but the specific focus in development is to simply explore and define "interesting" approaches for the creation of digital art.
hypnic-functions began in late 2019 as a single file with zero runtime user input. As my ideas have become more complex I've decided to develop a GUI for keeping things comprehensible and supporting more advanced visualizations. I don't have any sort of "end goal" or defined feature list with this work, it's more of a pet project that I work on whenever I'm inclined. I do hope to stray from more "standard" techniques that are widely supported within established image editing softwares, and instead focus on novel operations that are difficult or impossible without writing custom code.
As of writing, the program hasn't seen much work in terms of user-friendliness. I hope to change this in the future, but current usage of the code requires a lot of manual editing. As I create and continue to extend the capabilities of the GUI, this will facilitate the writing of more complicated manipulation functions as well as a suite of additional tools to provide additional context and control to the user.
-
hypnic_wrapper.py launches the code
-
hypnic_images.txt specifies a list of strings representing file paths to images which are loaded at the beginning of runtime
- pip - To install various Python packages for the project
- Pillow - For manipulating image files within Python
- Matplotlib - To visualize numerical data during image manipulation
- Tkinter - To build the GUI
I started this project as a personal endeavor and given the lack of direction or structure, I don't plan to collaborate with others on it. Regardless, feel free to reach out if you have an interest in contributing
This project has been and continues to be a learning experience for me, and I've relied heavily on others in that learning. The following people provided help in terms of things like sample code and answers to questions posted online:
- Sentdex, via the tutorials from his website PythonProgramming.net, especially the "GUIs with Tkinter (intermediate)" tutorial series
- Bryan Oakley (GitHub) for a number of incredible answers on StackExchange
- GitHub user PurpleBooth for the template that I used in creating this README
- John W. Shipman (1949 - 2017) for authoring the Tkinter 8.5 reference from the New Mexico Tech Computer Center, referenced in the list of resources acknowledged below
I'm also thankful to the following specific resources which were referenced during development
-
This document about the mathematical relationship between RGB and HSV color representations, from The University of Illinois College of Engineering's GE 423 course (circa 2005)
-
RapidTables' tool for HSV-to-RGB conversion
-
The kite.com Python documentation search
-
The Tk Commands Documentation from tcl.tk
-
The Tkinter 8.5 reference written by John W. Shipman
The document appears to have been originally hosted by NMT at this broken link but a cached version is hosted on GitHub Pages by user anzeljg It was also originally distributed in PDF form, and a download is available from Louisiana State University