A work in progress can be found here.
Often, I find myself utilizing tools such as Adobe CC or Coolors for my design work. I desire an efficient approach, to generate simple color palettes. This approach should also allow for generation from the terminal. Generally, I begin by selecting images like the one above as a basis for palette creation. By bypassing GUI interfaces and copying colors to the clipboard, I can hurry the process of palette validation and feedback. My focus lies on exploring color extraction methods. This is not a framework for color exploration.
Send a request with an image file, or url along with some options, and receive a palette back. To allow for others to use it how they saw fit I decided to design out a front end to the application as well. This allows for accommodation in the way each person may choose to interact with the service.
After outlining my initial idea for the user flow, and mapping out the design of the api, I began a competitive audit to gain more understanding about the default properties and functionality other tools in the space provided.
Competitive Analysis
I started with Adobe Color, a comprehensive service offering a range of color-related tools. With features spanning color creation, extraction, and exploration, Adobe Color stands out with its ability to pull from its massive dataset to offer trending palettes. Moreover, it comes at no cost to users, making it accessible to a wide audience. Adobe massive company size and historical relevancy as an industry standard imbues a sense of trust in the reliability and functionality of their products
Another significant player in the color tooling landscape is Coolors. This service focuses on addressing key aspects such as accessibility, color harmonies, and trending color schemes. One standout feature is its integration with numerous plugins and extensions, enriching the color exploration experience for users. Coolors operates on a freemium model, providing basic features for free with premium options available. Despite its smaller size, Coolors offers a versatile platform for users to experiment with colors and find the perfect palette.
TinEye offers a unique approach to color analysis through computer vision-enhanced image analysis. While its primary focus is not solely on color, TinEye incorporates color analysis as part of its broader capabilities. Notable features include data transformation and analysis, along with metadata indexing and searching support. Operating on a freemium model, TinEye provides basic functionalities for free, with additional premium options available. Despite its smaller size, TinEye’s innovative approach to image analysis makes it a valuable tool for those seeking comprehensive insights into color and beyond.
Based on the collected data, several key findings emerged. One-third of the surveyed companies offered a color extraction API, while all provided supplementary products or tools. Additionally, all companies allowed full access to their color extraction services for free. HEX was universally offered as an export format, while JSON was provided by only one, presented as an object on their website. Adobe Color exclusively offered a visual export format in JPEG, lacking any textual options.
In light of these conclusions, I’ve decided to proceed with the project’s design based on specific requirements. The service must offer an API mirroring the frontend’s core functionalities and support exporting to JSON, HEX, and YAML formats for seamless integration. Additionally, it must be free to ensure availability, despite potential resource constraints if the service were to become popular. With only one audited company providing an API outside their web UI, my offering could serve as a viable TinEye alternative without customer data retention. While Coolors offers extensive integrations, it lacks a command-line accessible API. These decisions aim to carve out a distinct market niche while addressing identified gaps in existing solutions.
Design Exploration
What properties, or state is required to fascilitate this? Mado should offer flexibility in three key aspects: setting a maximum palette size, accepting either locally hosted images or URLs from websites, and allowing users to choose the format in which the palette is returned.
Setting a maximum palette size was crucial to accommodate various programs where these colors may be utilized beyond personal use, such as NeoVim, VS Code, and more advanced palette generators like Coolors. This decision was influenced by the need for versatility in color usage across different platforms and tools.
The flexibility to accept both locally hosted images and URLs aims to align with industry standards and user preferences, reflecting insights gathered from information gathering and personal experience. This approach ensures that users can seamlessly integrate their preferred method of providing images for palette generation, enhancing usability and convenience.
Additionally, offering users the option to select the format aligns with the palette size requirement, catering to diverse preferences and facilitating easy integration with different software configurations. Whether users prefer JSON, YAML, or the widely used HEX format, the API provides the necessary flexibility to meet their needs effectively.
It's important to note that the implementation of the programmable palette extraction application is still in progress. As the sole contributor to this project, I am continuously working on refining and developing the application to meet its objectives effectively. While this case study presents the initial analysis and proposal, the journey towards a fully functional and optimized solution is ongoing. I remain committed to the iterative process of implementation, testing, and refinement, with the aim of creating a robust and user-friendly tool for color palette extraction. With my dedication to this project, I am confident in its eventual success and its potential to streamline the workflow of digital designers like myself.
Again, work in progress can be found here.