BlurHash.encode constructor
Encodes an image to a BlurHash string.
The parameters numCompX
and numCompY
are the number of components of
the BlurHash. Both parameters must be between 1 and 9. Throws a
BlurHashEncodeException when numCompX
and numCompY
are not in
the expected range.
Implementation
factory BlurHash.encode(
Image image, {
int numCompX = 4,
int numCompY = 3,
}) {
if (numCompX < 1 || numCompX > 9 || numCompY < 1 || numCompY > 9) {
throw BlurHashEncodeException(
'BlurHash components must be between 1 and 9.',
);
}
final img = image.convert(format: Format.uint8);
final components = List.generate(
numCompY,
(i) => List<ColorTriplet>.filled(numCompX, ColorTriplet(0, 0, 0)),
);
for (var y = 0; y < numCompY; ++y) {
for (var x = 0; x < numCompX; ++x) {
final normalisation = (x == 0 && y == 0) ? 1.0 : 2.0;
components[y][x] = _multiplyBasisFunction(img, x, y, normalisation);
}
}
return BlurHash._(_encodeComponents(components), components);
}