A GUI for live-rendered pixel-sorting; image manipulation
Sorta is a UI for creating glitch art by manipulating uploaded images using pixel-sorting, with real-time previews of the images as they are being edited.
Pixel-sorting can be tricky and users may not have the tools they need to manipulate the images they want while seeing the results in real-time. My app will provide an intuitive interface that simplifies the process, allowing users to experiment and create glitch art without the need for in-depth programming knowledge.
Artists, designers, and hobbyists interested in digital art and glitch aesthetics will find this app particularly useful. It is designed to handle JPEG and PNG files to accommodate a wide range of image formats used by the target audience.
- Users can upload JPEG and PNG files to apply the pixel-sorting
- A dynamic rendering of pixel-sorting effects as users adjust settings
- Tools to adjust various aspects of the pixel-sorting algorithm, such as orientation and sorting method.
- Lets users save their created images to a gallery to browse through later
- for building the UI
- for making calls to the API
- for the backend server
- for the real-time canvas feature, rendering the sorted pixels on the front-end
- for saving/serving files
- Where users upload, manipulate, and download their images
- Gallery of images created by the user
- Selected image with settings used to create it
- parameters: 'imageFile'
- example response: { success: true, message: "Image upload complete" }
- parameters: 'userId/username'
- example response: { success: true, images: [] }
- parameters: 'userId/username', 'imageData'
- example response: { success: true, message: 'Image saved' }
- initialize react project with create-react-app
- project structure: organize project into major components, assets, and utility folders
- create required components
- implement the image upload feature through a file input element
- develop a control panel for user settings/sorting parameters
- use the element to display uploaded image
- implement the pixel-sorting algorithm as a javascript function that can be imported into the react component
- connect the GUI control panel to dynamically update the image processing parameters
- Use useEffect, useRef, and useState hooks to manage and update the various states (uploaded image, control panel values, image processing)
- Find way of handling data flow between parent and child components throughout the image manipulation process and during control panel changes
- use the Canvas API to draw the processed image onto the canvas whenever the image or control parameters change
- test all components individually and test entire app to make sure they work as expected
- debug using the browser dev tools and React Developer tools
- get users to test, implement necessary changes based on user feedback and research
- use Sass styling to create a user-friendly interface
- make site responsive, possibly create a mobile version
- this would possibly happen with Heroku/S3
- Lots to learn in order ot fully optimize
I'd like to take this prototype and transform it from the CRUD-focused SPA it is now to a mobile digital art tool available initially through the App store, then for Android users as well:
- Remove unnecessary CRUD-focused features
- Use React Native/alternative to repackage into iOS compatible application
- Test and test and test
- Submit for App store review