It makes an interesting comparison to the others mentioned here. timg and pixterm both hard-wire the ISO/IEC 8613-6 control sequences for 256x256x256 RGB colour. Neither of them, as I have already mentioned elsewhere, optimize their output at all.
pxl employs a far more complete third party library for its terminal rendering, named termbox. This has ncurses-style double-buffering for no-op redraw suppression and redundant colour control sequence optimization. It does not optimize as far as BSD SCREEN did in the 1980s, which made use of several more tricks to reduce the need for emitting lengthy cursor motion control sequences (such as carriage return, line feed, and the various relative-motion control sequences; and not optimizing away writing a character if it is shorter to just re-output the next cell position than to move the cursor).
The downside of termbox is that whilst it supports 8-colour and 256-colour terminal types, and reads the TERM environment variable and terminfo entry to determine colour capability, it does not support 256x256x256 RGB colour and hardwires the 8-colour and 256-colour control sequences to ECMA-48 and ISO 8613-6 indexed colour control sequences rather than employing the appropriate terminfo fields, even though it reads the terminfo database.
timg, pxl, and pixterm also only display 2 pixels per character cell, because they all use the same single Unicode character for rendering (making termbox, with all of its worrying about character widths and replacement characters, overkill to an extent). As mentioned by its author on this page, tv uses a whole bunch of the box drawing and block graphic Unicode characters for increasing the number of pixels per character cell.
But whilst tv does both 256-colour and 256x256x256 RGB colour, it does not do 8-colour or greyscale like pxl does, and it completely ignores the terminfo database and the TERM environment variable.
https://github.com/ichinaski/pxl