#emoji #telegram #image #terminal #cli

bin+lib adaptemoji

Convert your regular Telegram emojis into adaptive monochrome versions

2 releases

0.1.1 Mar 27, 2024
0.1.0 Mar 27, 2024

#145 in Video

Download history 272/week @ 2024-03-26 29/week @ 2024-04-02 6/week @ 2024-04-09

307 downloads per month

MIT license

13KB
61 lines

Adaptemoji

Convert your regular Telegram emojis into adaptive monochrome versions

Examples

Original Adaptive Adaptive negative
Original image Adaptive image Adaptive negative image

As you can see, one of the adaptive versions looks wrong compared to original. But, if you switch your color theme from light to dark (or dark to light) the other one will be wrong. So, you need to use the one, that fits your background more.

Requirements

  1. CC linker (Windows - Microsoft Visual Studio with C++ Support) (Linux - gcc)

  2. Rust

Installation

cargo install adaptemoji

How to use

Regular

adaptemoji -i your-image.png -o output-image.png

Negative

adaptemoji -i your-image.png -o output-image.png -n

Also Telegram requires your emoji to be 100px x 100px in size. If you want adaptemoji automatically to resize image, add -r flag

Regular resized

adaptemoji -i your-image.png -o output-image.png -r

Negative resized

adaptemoji -i your-image.png -o output-image.png -nr

Using as library

Installation

cargo add adaptemoji

Examples

use adaptemoji::AdaptiveEmojiConvert;
use std::error;

fn main() -> Result<(), Box<dyn error::Error>> {
    let img = image::open("./assets/examples/original.webp")?;
    let mut resized_img = img
        .resize(100, 100, image::imageops::FilterType::Triangle) // Resize image to 100px x 100px
        .to_luma_alpha8();

    resized_img.convert_adaptive(false).save("./target/adaptive.png")?;

    Ok(())
}
use adaptemoji::AdaptiveEmojiConvert;
use std::error;

fn main() -> Result<(), Box<dyn error::Error>> {
    let img = image::open("./assets/examples/original.webp")?;
    let mut resized_img = img
        .resize(100, 100, image::imageops::FilterType::Triangle) // Resize image to 100px x 100px
        .to_luma_alpha8();

    adaptemoji::convert_adaptive(&mut resized_img, true);
    resized_img.save("./target/adaptive_negative.png")?;

    Ok(())
}

Dependencies

~11MB
~56K SLoC