Package Exports
- targadactyl
Readme
Targadactyl
A TGA (Targa) image loader for Node.js and Bun. This library allows you to load and decode TGA image files into canvas rendering contexts.
Installation
npm install targadactyl
# or
bun add targadactylUsage
Loading a local TGA file
import { TgaLoader } from 'targadactyl';
const tga = new TgaLoader();
try {
tga.load(await tga.open('./path/to/image.tga'));
// Access image data
console.log(tga.header);
console.log(tga.imageData);
// Get as Data URL
const dataUrl = tga.getDataURL('png');
// Decode to buffer for serving
const imageBuffer = tga.decode('png');
} catch (err) {
console.error('Failed to load TGA:', err);
}Loading a remote TGA file
import { TgaLoader } from 'targadactyl';
const tga = new TgaLoader();
const url = new URL('https://example.com/image.tga');
try {
tga.load(await tga.fetch(url));
const dataUrl = tga.getDataURL('png');
} catch (err) {
console.error('Failed to fetch TGA:', err);
}Loading from raw data
import { TgaLoader } from 'targadactyl';
import { readFileSync } from 'node:fs';
const tga = new TgaLoader();
const data = new Uint8ClampedArray(readFileSync('./image.tga'));
tga.load(data);
console.log(tga.header);API
TgaLoader
Main class for loading and decoding TGA files.
Methods
async open(path: string): Promise<Uint8ClampedArray>- Load a TGA file from the filesystemasync fetch(uri: URL): Promise<Uint8ClampedArray>- Load a TGA file from a URL (supportsfile://,http://, andhttps://protocols)load(data: Uint8ClampedArray): TgaLoader- Parse TGA data from a Uint8ClampedArraygetCanvas(): EmulatedCanvas2D- Get a canvas containing the decoded TGA imagegetDataURL(type?: 'image/png' | 'image/jpeg'): string- Get the image as a base64-encoded data URLdecode(contentType: 'image/png' | 'image/jpeg'): Uint8Array- Decode the TGA to PNG or JPEG format
Properties
header: TgaHeader- TGA file header informationimageData?: Uint8ClampedArray- Raw image datapalette?: Uint8ClampedArray- Color palette (for indexed images)
Supported TGA Formats
- Uncompressed RGB (8, 16, 24, 32 bit)
- RLE-compressed RGB
- Indexed color
- Grayscale (8, 16 bit)
- RLE-compressed grayscale
Development
Building
npm run build
# or
bun run buildTesting
npm test
# or with Bun
bun run build && bun test src/tga_test.tsCredits
Based on tga.js by Vincent Thibault.
License
MIT