Repository navigation
Releases: alex-1974/imagery-d
Release list
imagery-d v0.3.0
imagery-d v0.3.0
This release refines the public image-processing surface for consumers.
Highlights
- The default
import imagery;facade exposes conventional image-operation
names such asgaussianBlur,medianBlur,laplacian,canny,
opening,closingandnormalizedDifference. - Parallel, partitioned and intermediate Canny stages remain available for
advanced consumers throughimagery.analysis.primitiveswithout enlarging
the default facade. - Research notes and detailed benchmark evidence are maintained separately in
imagery-d-research,
keeping consumer source archives compact.
Compatibility
The package remains pre-1.0. Direct imports of the primitive module retain
compatibility aliases for medianFilter, laplace, open and close.
imagery-d v0.2.0
imagery-d v0.2.0 — RGB analysis and luminance stretch
This source release extends v0.1.0 Levels with RGB8 image analysis and
tone-mapping helpers. It remains a pre-1.0 D library for already decoded
rasters, with explicit pixel, ROI, mask and output contracts.
Added
RgbHistogram256andtryRgbHistogram256count stored RGB bytes over an
ROI and report per-channel minimum, maximum and mean. An optional binary
mask selects samples; zero excludes, every nonzero byte includes once.- Derived inclusive cumulative counts and integer nearest-rank percentiles
require no second image traversal. - Percentile contrast-stretch and histogram-equalization LUTs produce exact
3×256-byte maps. The caller decides where to apply a map. A histogram mask
selects samples for estimating the map, not pixels to edit. tryRgbLuminanceStretchOwnedestimates bounds from XYZ-D65-Y luminance,
scales linear-light RGB uniformly and publishes a new ROI-local owned
normalized encoded-sRGB float image. Its optional binary mask estimates
thresholds only; clipping policy and worker count are explicit.
Scalar Levels remains available with the v0.1.0 source contract. The
package now depends on raster-d ~>0.5.5 and color-d ~>0.3.0.
Compatibility and distribution
Linux x86-64 is the supported baseline. macOS and Windows remain best
effort. Pre-1.0 source APIs may evolve; no stable ABI or portable latency
guarantee is promised. The luminance operation is sequential by default;
applications can choose an explicit worker budget for previews.
This release is distributed as a GitHub source archive with API docs.
imagery-d is not registered on DUB; registration is planned for v1.0.0
unless a concrete earlier need arises.
imagery-d v0.1.0
imagery-d v0.1.0 — First release
The first pre-1.0 release of imagery-d, a general-purpose image
processing library for the D programming language. This is a small
usable starting point, not a feature-complete image editor or a
v1.0 stability promise.
Included
- Scalar Levels for already decoded
raster-dviews with
ubyte,ushortorfloatsamples. - Per-channel selection, explicit ROI and optional 8-bit weighted
editing mask; no implicit sRGB/ICC conversion or alpha policy. - A fresh ROI-local, interleaved owned
RasterLease!floatresult,
with explicit byte budget for the new pixel payload. - Two callable
@safetryLevelsOwnedoverloads; predictable normal
returned-error behavior and retained prior output on failure. - Ddoc and a consumer tutorial.
The package is MIT-licensed and depends on raster-d ~>0.2.0.
Compatibility
Supported: Linux x86-64; tested on Ubuntu 24.04 with
DMD 2.111.0/2.113.0 and LDC 1.41.0/1.43.0.
Best effort: macOS 15 and Windows 2025 passed ordinary DMD/LDC
consumer canaries; the full release matrix was not required there.
Pre-1.0: Source API may evolve in future 0.x minor versions;
no stable ABI, universal numerical ULP bound, process RSS cap,
image decoding, file-writing or automatic colour-management guarantee.
Basic use
import imagery : Levels, LevelsError, tryLevelsOwned;
import raster : RasterLease, RasterView, Region2D;
@safe LevelsError applyLevels(
scope RasterView!ubyte image,
ref RasterLease!float result,
size_t maxResultBytes)
{
bool[3] channels = [true, true, false];
return tryLevelsOwned!ubyte(
image,
Region2D(0, 0, image.width, image.height),
channels[],
Levels(0, 1, 2, 0, 1),
maxResultBytes,
result);
}Only LevelsError.none means success. The result owner is retained
on ordinary returned errors. The budget covers only the new float pixel
payload; a runtime OOM Error is not guaranteed recoverable.
Installation
Source: https://github.com/alex-1974/imagery-d
After the repository has been registered by its maintainer at
https://code.dlang.org/, the registry discovers SemVer tags.
Then DUB consumers can depend on imagery-d ~>0.1.0.
Registration and automatic registry indexing are separate from creating
this GitHub Release. Do not treat the registry as live until the
published imagery-d@0.1.0 can actually be fetched and consumed.
Qualification
On the last reviewed develop commit before release promotion,
DMD/LDC package tests, positive/negative API contracts, ordinary and
out-of-tree source-archive DUB consumers, 624-sample independent
90-digit Decimal oracle, P6 end-to-end image consumer and rendered
DDox checks passed. Linux compiler floor and clean
raster-d@0.2.0 registry-resolution tests passed. Performance
qualification was bounded to the demonstrated gamma-2 path.
Release publication requires checks on the exact release PR head
and actual tagged main commit. No new research or C++ parity benchmark
is necessary for this first 0.1.0 release.