@toolsmithhq/imagecore-files
v0.0.4
Published
High-level file-based API for imagecore — convert, resize, crop, rotate images by file URI
Downloads
149
Readme
@toolsmithhq/imagecore-files
High-level file-based image processing for React Native. File URI in, file URI out.
Part of ImageCore. Built on top of @toolsmithhq/imagecore-native.
Install
npm install @toolsmithhq/imagecore-native @toolsmithhq/imagecore-filesQuick Start
import { convertFile, resizeFile, getFileImageInfo } from '@toolsmithhq/imagecore-files';
const jpegUri = await convertFile('file:///path/to/photo.heic', 'jpeg', 0.85);
const thumbUri = await resizeFile(jpegUri, 200, 200, 'jpeg');
const info = await getFileImageInfo(jpegUri);No ArrayBuffers, no manual memory management.
API
Convert format
import { convertFile } from '@toolsmithhq/imagecore-files';
const pngUri = await convertFile(sourceUri, 'png'); // default quality: 0.85
const jpegUri = await convertFile(sourceUri, 'jpeg', 0.9); // custom qualityResize
import { resizeFile } from '@toolsmithhq/imagecore-files';
const resizedUri = await resizeFile(sourceUri, 800, 600, 'jpeg'); // default quality: 0.95Crop
import { cropFile } from '@toolsmithhq/imagecore-files';
// cropFile(uri, x, y, width, height, outputFormat, quality?)
const croppedUri = await cropFile(sourceUri, 100, 50, 400, 300, 'jpeg'); // default quality: 0.95Rotate
import { rotateFile } from '@toolsmithhq/imagecore-files';
const rotatedUri = await rotateFile(sourceUri, 90, 'jpeg'); // 90, 180, or 270. default quality: 0.95Flip
import { flipFile } from '@toolsmithhq/imagecore-files';
// flipFile(uri, horizontal, vertical, outputFormat, quality?). default quality: 0.95
const mirroredUri = await flipFile(sourceUri, true, false, 'png'); // horizontal flip
const flippedUri = await flipFile(sourceUri, false, true, 'png'); // vertical flipCompress
import { compressFile } from '@toolsmithhq/imagecore-files';
const compressedUri = await compressFile(sourceUri, 0.5, 'jpeg');Lossless JPEG rotate
Zero quality loss — rearranges DCT blocks directly without decoding pixels.
import { losslessJpegRotate } from '@toolsmithhq/imagecore-files';
const rotatedUri = await losslessJpegRotate(sourceUri, 90);Image info
import { getFileImageInfo } from '@toolsmithhq/imagecore-files';
const info = await getFileImageInfo(sourceUri);
// { width: 4032, height: 3024, format: 'jpeg', hasExif: true, fileSize: 2048576 }EXIF metadata
import { readFileExif, stripFileExif } from '@toolsmithhq/imagecore-files';
const exif = await readFileExif(sourceUri);
// { Make: 'Apple', Model: 'iPhone 15', DateTime: '2024:01:15 10:30:00', ... }
const strippedUri = await stripFileExif(sourceUri);Utility functions
import { readFileAsArrayBuffer, writeArrayBufferToFile } from '@toolsmithhq/imagecore-files';
const buffer = await readFileAsArrayBuffer(sourceUri);
const outputUri = writeArrayBufferToFile(buffer, 'png');Supported Formats
JPEG, PNG, WebP, BMP, TIFF, HEIC (iOS + Android), AVIF (macOS/WASM only)
License
MIT
