Files
squoosh/src/features/processors/resize/client/index.ts
2020-11-06 10:25:26 +00:00

56 lines
1.1 KiB
TypeScript

import {
builtinResize,
BuiltinResizeMethod,
drawableToImageData,
} from 'client/util';
import { BrowserResizeOptions, VectorResizeOptions } from '../shared/meta';
import { getContainOffsets } from '../shared/util';
export function browserResize(
data: ImageData,
opts: BrowserResizeOptions,
): ImageData {
let sx = 0;
let sy = 0;
let sw = data.width;
let sh = data.height;
if (opts.fitMethod === 'contain') {
({ sx, sy, sw, sh } = getContainOffsets(sw, sh, opts.width, opts.height));
}
return builtinResize(
data,
sx,
sy,
sw,
sh,
opts.width,
opts.height,
opts.method.slice('browser-'.length) as BuiltinResizeMethod,
);
}
export function vectorResize(
data: HTMLImageElement,
opts: VectorResizeOptions,
): ImageData {
let sx = 0;
let sy = 0;
let sw = data.width;
let sh = data.height;
if (opts.fitMethod === 'contain') {
({ sx, sy, sw, sh } = getContainOffsets(sw, sh, opts.width, opts.height));
}
return drawableToImageData(data, {
sx,
sy,
sw,
sh,
width: opts.width,
height: opts.height,
});
}