ASCII Art Generator

Additional

Language
Kotlin
Version
0.0.1 (Jun 20, 2018)
Created
Jun 19, 2018
Updated
Jan 31, 2024
Owner
Umar (zelin)
Contributor
Umar (zelin)
1
Activity
Badge
Generate
Download
Source code

ASCII-Art-Generator

Installation

The easiest way to add the library to your project is by adding it as a dependency to your build.gradle

dependencies {
   implementation 'com.neberox.library:asciicreator:0.1.0'
}

Usage

Using ASCIIConverter class

Create a ASCIIConverter object

var converter: ASCIIConverter = ASCIIConverter(this);

Create ASCII from bitmap

val bitmap = BitmapFactory.decodeResource(resources, R.drawable.test_image)
imgView.setImageBitmap(converter.createASCIIImage(bitmap));

Convert in the background async task providing a completion block. Completion block will be called on the main thread.

converter.createASCIIImage(bitmap, object : OnBitmapTaskListener {
        override fun onTaskCompleted(data: Bitmap?) {
            // Switch to the main thread to update the UI
            lifecycleScope.launch(Dispatchers.Main) {
            binding.imageView.setImageBitmap(data)
        }
    }
})

Convert to String

Log.d("ASCII-GENERATOR", converter.createASCIIString(bitmap));

Convert in the background async task providing a completion block. Completion block will be called on the main thread.

converter.createASCIIString(bitmap, object : OnStringTaskListener {
    override fun onTaskCompleted(data: String?) {
        data?.let {
            Log.d("ASCII-GENERATOR", it)
        }
    }
})

Options available

converter.setFontSize(18);
converter.setReversedLuminance(false);
converter.setGrayScale(false);
converter.setBackgroundColor(Color.RED);

More Options

By default luminance values are mapped to strings using

val map: MutableMap<String, Float> = HashMap()
map[" "] = 1.0f
map["`"] = 0.95f
map["."] = 0.92f
map[","] = 0.9f
map["-"] = 0.8f
map["~"] = 0.75f
map["+"] = 0.7f
map["<"] = 0.65f
map[">"] = 0.6f
map["o"] = 0.55f
map["="] = 0.5f
map["*"] = 0.35f
map["%"] = 0.3f
map["X"] = 0.1f
map["@"] = 0.0f

You can instantiate a converter with your own map

val map: MutableMap<String, Float> = HashMap()
map[" "] = 1.0f
map["`"] = 0.95f
map[","] = 0.9f
map["-"] = 0.8f
map["+"] = 0.7f
map["<"] = 0.65f
map["o"] = 0.55f
map["="] = 0.5f
map["%"] = 0.3f
map["@"] = 0.0f

converter = ASCIIConverter(Activity.this, map)

Potential Improvements

  • Creating an ASCIIImageView to automatically generate ASCII from bitmap
  • Implementing more options for creating ASCII

Author

Muhammad Umar, https://github.com/zelin

License

ASCII-Art-Generator is available under the MIT license. See the LICENSE file for more info.