snoopy3476 / eth-blockies-rs

A pure Rust library to get raw data of Ethereum-style blockies (for saving blockies icon images, printing to terminal, ...)
https://crates.io/crates/eth-blockies
MIT License
8 stars 1 forks source link
blockies ethereum icons identicon-generator identicons rust

eth-blockies-rs

binary-example.png

A lightweight library in pure Rust to get raw data of Ethereum-style blocky identicon, which can be used for generating blockies icon images, printing to terminal, etc.

Useful when getting raw RGB data of Ethereum-style blockies, as well as complete png image files.

Supports general Rust bin/lib, and WebAssembly (wasm) target.

Live Demo

library-example.png

Library

Documentation

Prerequisites

Library Basic Usage

  1. Define a blockies type (size) to use

    • Make an alias type of Blockies
      
      use eth_blockies::{Blockies, BlockiesGenerator};

    // Blockies < size (const), T > type Icon = Blockies<15, T>;

    
    * *Cf)* For Ethereum address blockies, [`EthBlockies`](https://docs.rs/eth-blockies/1.1/eth_blockies/type.EthBlockies.html) is predefined as follows
    ```rust
    // use statement for Ethereum address blockies
    use eth_blockies::{EthBlockies, SeedInput, BlockiesGenerator};
    //   type 'EthBlockies<T>' is predefined as 'Blockies<8, T>'

  2. Select an input seed type

    • Check for SeedInput to get full list of input seed types

      // generate blockies from various input type
      let from_string = Icon::data("eth-blockies".to_string());
      let from_byte_vec = Icon::data(vec![0x0c, 0x93, 0xa3, 0x2e]);
    • Cf) For Ethereum address seeds, apply to_ethaddr_seed() before passing as input seed

      
      // generate Ethereum address blockies from various input type

    let seed_from_str = "0xe686c14FF9C11038F2B1c9aD617F2346CFB817dC" .to_ethaddr_seed(); let from_str = EthBlockies::data(seed_from_str);

    let seed_from_bytes = [ 0xe6, 0x86, 0xc1, 0x4f, 0xf9, 0xc1, 0x10, 0x38, 0xf2, 0xb1, 0xc9, 0xad, 0x61, 0x7f, 0x23, 0x46, 0xcf, 0xb8, 0x17, 0xdc, ].to_ethaddr_seed(); let from_bytes = EthBlockies::data(seed_from_bytes);

    
    ---
  3. Select an output data type

    • Check for BlockiesGenerator to get full list of output data types
      // generate blockies in various forms
      let in_rgb_2d_arr = Icon::data("eth-blockies");
      let in_indexed_2d_arr = Icon::indexed_data("eth-blockies");
      let in_gray_2d_arr = Icon::data_mapped("eth-blockies", to_gray);
      let in_png_data_vec = Icon::png_data("eth-blockies", (128, 128));

Example

Cargo Features

Binary

Install

$ cargo install eth-blockies

Binary Usage

usage: eth-blockies <seed> [output-fmt (ansi|image)] [OPTIONS...]

<seed>                 Seed to generate blockies (e.g. Ethereum wallet address)

[output-fmt]  - ansi   (Default) Generate ansi sequence of blockies,
                       usually for printing to terminal
              - image  Generate png image data of blockies

[OPTIONS...]:

        -e --ethseed   Interpret seed string as Ethereum address,
                       and canonicalize seed (to lowercase + set '0x' prefix)
                       to get Ethereum blockies correctly
        -a --ascii     (only for 'ansi' mode)   Get non-compact, big blockies
                                                with ascii (non-unicode)
        -r --raw       (only for 'image' mode)  Get uncompressed, raw png image

        -s --size=<BLOCKIES_SIZE>
                       Blockies size: # of elems per side (1-32) (Default: '8')

        -d --dimension=<WIDTH>x<HEIGHT>
                       Dimensions of output in the form of '(width)x(height)'
                       If not given, following is used (Default):
                       - ('ansi' mode)   '(blockies_size)x(blockies_size)'
                       - ('image' mode)  '128x128'

        -o --outfile=<FILENAME>
                       File name to write output
                       If the parameter is not given, stdout is used (Default)

examples:

- Outputs from following commands are all the same:
$ eth-blockies 0xe686c14ff9c11038f2b1c9ad617f2346cfb817dc
$ eth-blockies e686c14FF9C11038F2B1c9aD617F2346CFB817dC -e

- Outputs from following commands are all the same:
$ eth-blockies "generic_seed_not_ethaddr" --size=15
$ eth-blockies "generic_seed_not_ethaddr" ansi --size=15 --dimension=15x15
$ eth-blockies "generic_seed_not_ethaddr" a -s 15 -d 15x15

- Outputs from following commands are all the same:
$ eth-blockies "generic_seed" image > blockies.png
$ eth-blockies "generic_seed" i -d128x128 -oblockies.png
$ eth-blockies "generic_seed" i -d 128x128 -o blockies.png

Author

Kim Hwiwon \kim.hwiwon@outlook.com\

License

The MIT License (MIT)