This is a CLI application for converting images to teletext level 1 compatible data. Starting from the upper leftmost, the algorithm goes by 2x3 blocks of pixels, and translates them to teletext mosaic charachters. It can also be used as a Node.js library.
It handles images of any dimensions, they don't have to be within the constraints of a standard teletext page.
- Node.js v14 or newer (recommended: v18 or newer)
- npm v6 or newer (comes with Node.js)
This module is distributed via npm.
$ npm install -g img2teletext$ img2teletext <image-file> [options]-V, --version- Output the version number-b, --bin- Generate binary output (default)-e, --edittf- Generate edit.tf URL for online teletext editor-z, --zxnet- Generate ZXNet URL for online teletext editor--base64- Generate base64 encoded output-j, --json- Generate JSON array output--hash- Generate teletext hash for edit.tf and zxnet compatibility-h, --help- Display help information
# Convert image to binary teletext data (default output)
$ img2teletext image.png
# Generate a JSON array of teletext character codes
$ img2teletext image.png --json
# Generate a shareable edit.tf URL
$ img2teletext image.png --edittf
# Generate a shareable ZXNet URL
$ img2teletext image.png --zxnet
# Generate base64 encoded data
$ img2teletext image.png --base64
# Generate teletext hash for compatibility
$ img2teletext image.png --hash- PNG (
.png) - JPEG (
.jpg,.jpeg)
const img2teletext = require('img2teletext').default;
const { PNG } = require('pngjs');
const fs = require('fs');
const data = fs.readFileSync('./test/test.png');
const png = PNG.sync.read(data);
const teletextData = img2teletext(png.data, png.width);
console.log(teletextData);import img2teletext from 'img2teletext';
import { PNG } from 'pngjs';
import fs from 'fs';
const data = fs.readFileSync('./test/test.png');
const png = PNG.sync.read(data);
const teletextData: Uint8Array = img2teletext(png.data, png.width);
console.log(teletextData);This project is written in TypeScript. To build the project:
npm install
npm run buildTo run tests:
npm testTo watch for changes during development:
npm run devThis code is released under the MIT license, feel free to do whatever you want with it.
