Description
This is a small image processing library done to find good color for icon background. It uses CIEDE2000 to determine what colors can be processed as the same.
Poliwhirl alternatives and similar packages
Based on the "Colors" category.
Alternatively, view Poliwhirl alternatives based on common mentions on social networks and blogs.
-
ColorPicker
🎨 A color picker for Android. Pick a color using color wheel and slider (HSV & alpha). -
Material-Resources-Library
A list of most useful resources for designing android apps such as all material colors and dimens, 180 Gradient background + html, social, flat, fluent, metro colors.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Poliwhirl or a related project?
README
Poliwhirl
Description
This is a small image processing library done to find good color for icon background. It uses CIEDE2000 to determine what colors can be processed as the same.
Result example
Here goes the table with the generated colors.
Input | Result |
---|---|
Usage
Gradle:
compile 'com.antonpotapov:poliwhirl:$version'
Maven:
<dependency>
<groupId>com.antonpotapov</groupId>
<artifactId>poliwhirl</artifactId>
<version>$version</version>
</dependency>
In code:
You need to use only one class: Poliwhirl()
. It's instance is reusable. So, you may create in only once. Also, there is no any long-time operations in instance creation, so you can create it each time you need it.
Poliwhirl().generateAsync(bitmap, object : Poliwhirl.Callback {
override fun foundColor(color: Int) {
// do whatever you need with the color
}
})
Poliwhirl().generate(bitmap);
Here you can provide an executor to poliwhirl. Poliwirl will try to execute it's calculation in parallel in this case. Also you can provide something like current-thread executor (thats how sync way is done) or whatever you need.
Poliwhirl().generateOnExecutor(bitmap, object : Poliwhirl.Callback {
override fun foundColor(color: Int) {
pictureBackground.setBackgroundColor(color)
}
}, Executors.newSingleThreadExecutor())