quick-scale
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

quick-scale

Create a Fast Linear Scaling Function

features

  • CPU Optimized
  • Reversible
  • Rounding

why

There's a lot of alternatives, but I believe quick-scale provides a mix of features not found together in another package, including the ability to simply reverse the scale and define a strategy for when the range is zero.

install

npm install quick-scale

basic usage

In this basic example, we scale values from an unsigned 16-bit range (common in satellite imagery) to an unsigned 8-bit range (common in JPG and PNG files).

import { createScaleFunction } from "quick-scale";

// the [min, max] values for a 16-bit image
const old_range = [0, 65536];

// the [min, max] values for an 8-bit RGB image
const new_range = [0, 255];

const scale = createScaleFunction(old_range, new_range);

// apply this scale function to a bunch of numbers
scale(65535); // highest possible input value
255

scale(0); // lowest possible input value
0

scale(32767); // a value close to the middle
127.49805447470817

advanced usages

We can round, flip and do more advanced things by passing in an options object:

const scale = createScaleFunction(old_range, new_range, {
  // flip the scale, so higher and lower values are reversed
  // the typical use case is if you want higher data values to appear
  // darker in an RGB(A) image
  flip: true,

  // sometimes the difference between the min and max of a source range
  // will be zero, like when an image transparency band is all 255
  // if you'd like to provide a value to return in this case, set no_range_value
  no_range_value: -99,

  // if your input range is zero and you don't set no_range_value,
  // then quick-scale will return the "highest", "lowest", or "middle" value of the new range
  // the default is to return the highest value of the new range
  no_range_value_strategy: "lowest",

  // round the result
  round: true
});

scale(65535);
0 // the highest value becomes the lowest because flip was set to true

scale(0);
255 // the lowest value becomes the highest because flip was set to true

scale(32767);
128 // rounded result

alternatives

Readme

Keywords

Package Sidebar

Install

npm i quick-scale

Weekly Downloads

2,379

Version

0.2.0

License

CC0-1.0

Unpacked Size

14.9 kB

Total Files

6

Last publish

Collaborators

  • danieljdufour