Bluetape4k Image Manual
Latest stable Based on Image release 0.3.0
bluetape4k-image provides two image-processing families for Kotlin/JVM applications. The bluetape4k-images path builds on Scrimage and Java2D for immutable image operations, filters, transforms, analysis, CAPTCHA, OCR, and framework integration. The libvips path exposes a binding-neutral API with a Java 21 JNI backend and a Java 25 FFM backend for native processing.
This manual is organized around decisions and production tasks rather than package names. Start with the runtime and backend choice, complete one runnable workshop, and then open the module reference when you need exact API or configuration details.
Core capabilities
Section titled “Core capabilities”- Immutable JVM processing: The image model, loading and writing, and transforms and filters cover safe Scrimage and Java2D pipelines.
- Analysis and formats: Analysis and similarity plus the codec guide explain metadata, comparison, encoding, and format choices.
- Barcode, CAPTCHA, and OCR: The integration guides for CAPTCHA and OCR, together with the published barcode modules, provide common extraction and challenge flows.
- Native libvips backends: The binding-neutral Vips API supports a Java 21 JNI backend and a Java 25 FFM backend with explicit native-resource ownership.
- Web framework integration: Ktor and Spring Boot connect image processing, upload, CAPTCHA, OCR, health, and metrics to application lifecycles.
- Storage and production selection: Storage and CDN, performance selection, and testing and operations define the boundaries the application must own.
Version baseline
Section titled “Version baseline”Applications select one central BOM version: io.github.bluetape4k:bluetape4k-dependencies:<version>. They do not need to align the image BOM, Scrimage, Ktor, Spring Boot, or native binding versions independently.
The technical baseline is the immutable 0.3.0 release. It contains 8 published libraries, 1 published image BOM, 5 runnable examples, and 1 non-published benchmark project.
- Release tag 0.3.0
- Release commit a571c300
- Runtime baseline: JDK 21 for the Scrimage, OCR, framework, and JNI paths; JDK 25 for the FFM backend
Features added after this tag are deliberately absent. Every source link in this manual resolves against the 0.3.0 release tag or its pinned commit.
Where to start
Section titled “Where to start”- Use Getting started to establish the dependency and runtime baseline.
- Read Backend selection before choosing Scrimage, JVips, or the Java 25 FFM binding.
- Follow the Learning path for an ordered route through processing, framework integration, OCR, and native execution.
- Open the Repository map to see how the 15 release projects fit together.
- Read Testing and operations before shipping native libraries, OCR data, storage, or CDN configuration.
Responsibility boundary
Section titled “Responsibility boundary”The library owns image adapters, common operations, and framework wiring. The application still owns upload limits, accepted formats, file and object-store policy, native package installation, OCR language data, lifecycle shutdown, and production observability.