โก 10โ50ร faster than Java's BufferedImage. Off-heap zero-copy memory. SIMD AVX2 accelerated Bicubic spline, Area-Average Anti-Aliasing, and blur filters.
FastImage provides ultra-fast C++ native image processing for Java applications, replacing slow JVM BufferedImage rendering loops with SIMD-accelerated Catmull-Rom Bicubic scaling, Area-Average Anti-Aliasing, Dual-Kawase blur, and color transforms.
import fastimage.FastImage;
import java.awt.image.BufferedImage;
public class Demo {
public static void main(String[] args) {
// 1. Create 1080p off-heap image buffer
FastImage img = FastImage.create(1920, 1080);
// 2. Apply SIMD-accelerated filters (Chaining API)
FastImage processed = img
.resize(1280, 720)
.blurKawase(3.0f, 2)
.grayscale()
.adjustBrightness(1.2f);
// 3. Export to BufferedImage or native handle
BufferedImage result = processed.toBufferedImage();
}
}- Why FastImage?
- Key Features
- Real-World Use Cases
- Architecture & Pipeline
- Performance Benchmarks
- API Quick Reference
- Installation
- Documentation
- Platform Support
- License
- Related Projects
Standard Java BufferedImage operations suffer from heavy heap allocation overhead, slow software rasterizers, and JVM GC stalls. FastImage addresses this by:
- SIMD Vectorization โ Uses native C++ AVX2 vector instructions for multi-pixel parallel scaling and color manipulation.
- Off-Heap Direct Memory โ Stores pixel buffers in native unmanaged memory to eliminate JVM GC pauses completely.
- Kawase & Mipmapped Blur โ Implements modern GPU-grade blur algorithms running in native C++ for UI overlays.
- โก Native AVX2 SIMD Acceleration โ Leverages 256-bit AVX2 vector registers for ultra-fast Bilinear scaling and color adjustments.
- ๐ผ๏ธ Off-Heap Zero-GC Memory โ Allocates raw pixel buffers in direct native memory to prevent JVM Garbage Collection stalls.
- ๐ Dual Kawase & Stack Blur โ High-speed blur algorithms for modern UI translucent overlays and game HUDs.
- ๐ Chainable Fluent API โ Functional transformation pipeline returning new immutable
FastImageinstances. - ๐ Interoperable Java Bridge โ Zero-copy converter to and from
java.awt.image.BufferedImage.
- ๐ฎ Game Overlays & Translucent HUDs: Real-time Gaussian and Kawase blur filtering for high-FPS game HUD overlays.
- ๐น Live Screen Capture Pipeline: Downscale and process 1080p/4K video frames from FastScreen without GC stutters.
- ๐ผ๏ธ Thumbnail & Preview Generators: Batch-resize thousands of high-resolution images in web servers and media CMS platforms.
- ๐ค Computer Vision Preprocessing: Normalize, crop, and convert image frames before feeding AI vision models.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Foreign Source (FastScreen / FastCamera / Raw Pointer) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Zero-Copy wrap() / Direct Native Allocation
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Off-Heap Unmanaged Memory Buffer (32-Bit ARGB) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 256-Bit AVX2 SIMD Vector Kernels
โ (Dual-Kawase Blur / Bilinear / Area-Average)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Processed Off-Heap FastImage (0 Bytes GC) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Instant Chaining or Zero-Copy Export
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Vision Models (ONNX/Vulkan) or BufferedImage โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
In the official JMH Benchmark, FastImage measured throughput for full 1080p (1920ร1080) to 720p (1280ร720) frame processing:
Benchmark Mode Cnt Score Units
Benchmark.benchmarkFastImageResizeNearest thrpt 2 642.614 ops/s
Benchmark.benchmarkFastImageResizeAreaAverage thrpt 2 199.345 ops/s
Benchmark.benchmarkFastImageResizeBilinear thrpt 2 127.117 ops/s
Benchmark.benchmarkFastImageResizeBicubic thrpt 2 37.105 ops/s
Benchmark.benchmarkFastImageKawaseBlur thrpt 2 24.451 ops/s
Note
Environment & Setup: Measured on an 11th Gen Intel Core i5-1135G7 (Microsoft Surface Pro 8) running Windows 11 with JDK 21. FastImage processes full 1080p uncompressed frames at up to 640+ operations per second (Point) and 199+ operations per second (OpenMP-accelerated Area-Average Anti-Aliasing) with zero JVM Garbage Collection allocations.
| Method | Description | Path |
|---|---|---|
create(width, height) |
Allocates an unmanaged off-heap ARGB pixel buffer. | Reference ๐ |
fromBufferedImage(image) |
Converts a Java BufferedImage to FastImage. |
Reference ๐ |
fromPixels(pixels, width, height) |
Creates an instance directly from an int[] array. |
Reference ๐ |
wrap(address, width, height) |
Zero-copy wrap of raw native 64-bit address. | Reference ๐ |
wrap(Pointer, width, height) |
Zero-copy wrap of a FastPointer handle. |
Reference ๐ |
wrap(ByteBuffer, width, height) |
Zero-copy wrap of a direct java.nio.ByteBuffer. |
Reference ๐ |
| Method | Description | Path |
|---|---|---|
resize(newW, newH) |
Native AVX2 SIMD bilinear image scaling. | Reference ๐ |
resizeNearest(newW, newH) |
Ultra-fast Nearest-Neighbor (point) scaling. | Reference ๐ |
resizeBicubic(newW, newH) |
Ultra-sharp Catmull-Rom Bicubic spline resampling. | Reference ๐ |
resizeAreaAverage(newW, newH) |
OpenMP-accelerated Area-Average downsampler. | Reference ๐ |
crop(x, y, width, height) |
Crops sub-region into a new FastImage. |
Reference ๐ |
flipHorizontal() / flipVertical() |
Flips image along X or Y axis in-place. | Reference ๐ |
| Method | Description | Path |
|---|---|---|
blurKawase(radius, passes) |
High-speed multi-pass Kawase blur filter. | Reference ๐ |
blurDualKawase(radius) |
Premium 2-pass Dual-Kawase down/upsample blur. | Reference ๐ |
blurGaussian(radius) |
Smooth separable Gaussian blur. | Reference ๐ |
blurStack(radius) |
CSS backdrop-filter grade stack blur. |
Reference ๐ |
blurBox(radius) |
Fast box blur filter. | Reference ๐ |
blurMipmapped(radius) |
Large-radius hierarchical down/upsample blur. | Reference ๐ |
| Method | Description | Path |
|---|---|---|
grayscale() |
Vectorized luminance weighting to monochrome. | Reference ๐ |
adjustBrightness(factor) |
Scales pixel luminance (1.0 = normal). |
Reference ๐ |
adjustContrast(factor) |
Adjusts image contrast ratio. | Reference ๐ |
toBufferedImage() |
Converts native pixels to standard BufferedImage. |
Reference ๐ |
getPixels(int[] dest) |
Fills a pre-allocated Java int[] array. |
Reference ๐ |
getDirectBuffer() |
Returns a direct ByteBuffer view of native memory. |
Reference ๐ |
getPointer() |
Returns a fastpointer.Pointer to native memory. |
Reference ๐ |
Add the JitPack repository and the complete dependency stack to your pom.xml:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<!-- FastImage Engine -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastImage</artifactId>
<version>0.1.4</version>
</dependency>
<!-- FastSIMD Hardware Vector Acceleration Engine -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastSIMD</artifactId>
<version>0.1.3</version>
</dependency>
<!-- FastMemory Aligned Allocator -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastMemory</artifactId>
<version>0.1.2</version>
</dependency>
<!-- FastPointer Address Wrapper -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastPointer</artifactId>
<version>0.1.2</version>
</dependency>
<!-- FastCore Native Loader -->
<dependency>
<groupId>com.github.andrestubbe</groupId>
<artifactId>FastCore</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.andrestubbe:FastImage:0.1.4'
implementation 'com.github.andrestubbe:FastSIMD:0.1.3'
implementation 'com.github.andrestubbe:FastMemory:0.1.2'
implementation 'com.github.andrestubbe:FastPointer:0.1.2'
implementation 'com.github.andrestubbe:FastCore:0.1.0'
}Download the required JARs directly to add them to your classpath:
- โก FastImage-0.1.4.jar (The Core Library)
- ๐ FastSIMD-0.1.3.jar (Hardware Vector Acceleration Engine)
- ๐พ FastMemory-0.1.2.jar (32-Byte Aligned Allocator)
- ๐ FastPointer-0.1.2.jar (Primitive Address Pointer)
- โ๏ธ fastcore-0.1.0.jar (Mandatory Native Loader)
Important
All JARs must be included in your classpath for the native SIMD JNI bindings to function correctly.
- CHANGELOG.md: Version history and release notes.
- COMPILE.md: Full compilation guide (MSVC C++17 build chain + JNI Setup).
- REFERENCE.md: Full API contracts and routing logic.
- PHILOSOPHY.md: Off-heap zero-GC memory philosophy.
- ROADMAP.md: Future development goals.
| Platform | Status |
|---|---|
| Windows 10/11 (x64) | โ Fully Supported |
| Linux | ๐ Planned |
| macOS | ๐ Planned |
MIT License โ See LICENSE file for details.
- FastScreen โ DirectX zero-copy screen capture engine
- FastGraphics โ Hardware-accelerated DirectX rendering
- FastCore โ Native JNI loader for FastJava libraries
Part of the FastJava Ecosystem โ Making the JVM faster. Small package. Maximum speed. Zero bloat. โก
