A drawing app that allows the user to draw a quick sketch using a variety of simple drawing tools and a simple palette. The user can choose to randomly generate their color palette or upload an image to extract a palette from it. The sketch can then be converted to a completed, coloured art piece.
This program was created to provide a fun an intuitive way for users to create digital art. The color palette generation features let users explore new color combinations, and the AI rendering features make it easy for users to enhance their drawings and experiment with AI-driven art styles. This program is ideal for anyone interested in exploring digital art.
This drawing program includes the following features:
- Basic Drawing Functionality:
- Users can create sketches with a mouse and draw with different colors and brush size
- Users can draw different shapes.
- Users can undo and redo brush strokes.
- Color Palette:
- Generate a random color palette for inspiration.
- Lock certain colors and regenerate or choose colors manually.
- Upload an image to extract a color palette from it.
- Render: Convert your sketch into a complete painting by entering a description of your sketch.
- Image Export: Save your sketch as an image file for easy sharing and printing.
- Imagga API:
- This is used to extract color palettes from images.
- Clipdrop API:
- This is used to convert sketches to images.
To get started with this project, follow the instructions below to set it up on your local machine.
Before installing, make sure you have the following tools installed on your system:
-
Java (JDK 11 or higher): This project is built using Java. You can download the latest version of Java from Oracle's website or use OpenJDK.
-
IntelliJ IDEA: You can download IntelliJ IDEA from here. Any edition (Community or Ultimate) will work.
-
Git: To clone the repository, you’ll need Git installed. You can download Git from here.
-
Operating Systems: This software has been tested and confirmed to work on Windows. We have not yet tested it on other operating systems (e.g., macOS, Linux), so compatibility with these systems is not guaranteed.
- Open the project in IntelliJ IDEA:
- Launch IntelliJ IDEA
- Go to File > New > Project From Version Control and paste
https://github.com/rosej12/CSC207_Project.git
as the URL.
- Check project SDK:
- Ensure that IntelliJ IDEA is using the correct version of the JDK for the project. Go to File > Project Structure > Project and set the Project SDK to JDK 11 (or higher), if not already set.
- Import Maven dependencies: IntelliJ IDEA should automatically import the dependencies listed in the
pom.xml
file when you open the project. If it doesn't, you can manually refresh Maven:- Right-click on the
pom.xml
file and select "Add as Maven Project" from the context menu. This will configure the project as a Maven project and allow IntelliJ IDEA to manage dependencies.
- Right-click on the
- Run the application: Open the
Main.java
file and press Run.
- Maven errors: If you encounter errors related to Maven dependencies, try refreshing the Maven project in IntelliJ IDEA:
- Open the Maven tool window.
- Click the Refresh button (the circular arrow).
- IntelliJ IDEA not recognizing dependencies
- If IntelliJ IDEA doesn't automatically import dependencies from the
pom.xml
, you can manually trigger the import by right-clicking on thepom.xml
file and selecting Maven > Reimport.
- If IntelliJ IDEA doesn't automatically import dependencies from the
- Drawing:
- Launch the program and use your mouse to draw on the canvas. Switch between painting and erasing and adjust brush size using the toolbar.
- Color Palette:
- Click on the "Generate Colors" button to create a random color palette.
- Lock the current palette and generate a new one or manually select individual colors.
- Click on the "Generate Color from Image" button to then upload an image to extract its dominant colors and use them in your drawing.
- Once you have a palette, switch between the colors in the toolbar.
- Render:
- Once your sketch is complete, go to the "Render Screen."
- Enter a description of your sketch, and you will get a finished drawing based on your sketch and description.
- Saving Your Artwork:
- Save your sketch by clicking the "Save Image" button.
- Shapes:
- Go to the "Shapes" screen to generate custom shapes.
- Select a shape type (line, rectangle, square, triangle, or circle) and customize its dimensions, color, and stroke size.
- Select "Draw Shape" and add the generated shape to your canvas.
This project is licensed under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. For more information, refer to the LICENSE file.
We welcome your feedback! Please share your thoughts and suggestions or report bugs in the Discussions or Issues section of this repository.
- Valid feedback should describe the issue clearly, include screenshots if applicable, and suggest possible improvements.
- Expect responses within a week and be sure to check back for updates.
We welcome contributions to this project! If you'd like to help improve the project, follow the steps below to contribute.
-
Fork the repository: Click the "Fork" button at the top-right corner of this page to create a copy of the repository under your GitHub account.
-
Clone your fork: After forking, clone your repository to your local machine
-
Create a new branch: Always create a new branch for your feature or bug fix
-
Make your changes: Work on your changes in your local branch. This could include adding features, fixing bugs, or improving documentation.
-
Commit your changes: After making your changes, commit them with a clear and descriptive message
-
Push to your fork: Push your changes to your fork on GitHub:
-
Open a pull request: Go back to this repository and click the "New pull request" button. Describe your changes in the pull request and link to any relevant issues.
- Provide a clear description of what your pull request does.
- If applicable, reference any issues (e.g., "Fixes #123") in the title.
- Follow the existing coding style and conventions used in the project (Ensure you follow CLEAN Architecture and SOLID principles).
- Ensure that your changes do not break existing functionality and include tests as well as screenshots of test coverage where applicable.
- Ayushi Verma (@Ayushivvv)
- Rosanna Jiang (@rosej12)
- Charles Cai (@peachvegetable)
- Roberts Haughton (@reobertjhaughton)
- Ekin Su Dogan (@doganeki)