Skip to content

lujiaqiuu/Native-Floyd-Steinberg-Dithering

 
 

Repository files navigation

License

Native-Floyd-Steinberg-Dithering

Android library for floyd-steinberg dithering on bitmap using JNI/Cmake

Why FSD

For those who don't know the purpose of Floyd-Steinberg algorithm, it is a algorithm to turn color image to black and white(NOT GRAYSCALE).

When would we use this? Well, for those e-ink displays like Amazon Kindle, they can't display color images, and just black and white would still look bad, this is when this algorithm is usful.

I have tried using just java to run the algorithm, but it is slow. Not a good idea to run on main thread. This library is small and easy to use.

Using FSD

Setup

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}
Dependencies
	dependencies {
	        compile 'com.github.jeffreyliu8:Native-Floyd-Steinberg-Dithering:1.0.0'
	}

A quick example is shown below:

val original = BitmapFactory.decodeResource(resources, R.drawable.lena)
val fsBitmap = Utils.floydSteinbergDithering(original)

And for just black and white image:

val bwBitmap = Utils.binaryBlackAndWhite(original)

And for gray-scale image(This is just a simple java function):

val grayBitmap = Utils.toGrayscale(original)

Output sample

Requirements

Requires a minimum SDK version of 14

About

android 二值化

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 37.0%
  • Kotlin 30.4%
  • Java 17.0%
  • CMake 15.6%