mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-13 09:17:20 +00:00
# Conflicts: # codecs/cpp.Dockerfile # codecs/imagequant/example.html # codecs/webp/dec/webp_dec.d.ts # codecs/webp/dec/webp_dec.js # codecs/webp/dec/webp_dec.wasm # codecs/webp/enc/webp_enc.d.ts # codecs/webp/enc/webp_enc.js # codecs/webp/enc/webp_enc.wasm # package-lock.json # package.json # src/codecs/tiny.webp # src_old/codecs/encoders.ts # src_old/codecs/processor-worker/tiny.avif # src_old/codecs/processor-worker/tiny.webp # src_old/codecs/tiny.webp # src_old/components/compress/index.tsx # src_old/lib/util.ts # src_old/sw/util.ts
22 lines
739 B
TypeScript
22 lines
739 B
TypeScript
import mozjpeg_enc, {
|
||
MozJPEGModule,
|
||
} from '../../../codecs/mozjpeg_enc/mozjpeg_enc';
|
||
import wasmUrl from '../../../codecs/mozjpeg_enc/mozjpeg_enc.wasm';
|
||
import { EncodeOptions } from './encoder-meta';
|
||
import { initEmscriptenModule } from '../util';
|
||
|
||
let emscriptenModule: Promise<MozJPEGModule>;
|
||
|
||
export async function encode(
|
||
data: ImageData,
|
||
options: EncodeOptions,
|
||
): Promise<ArrayBuffer> {
|
||
if (!emscriptenModule)
|
||
emscriptenModule = initEmscriptenModule(mozjpeg_enc, wasmUrl);
|
||
|
||
const module = await emscriptenModule;
|
||
const resultView = module.encode(data.data, data.width, data.height, options);
|
||
// wasm can’t run on SharedArrayBuffers, so we hard-cast to ArrayBuffer.
|
||
return resultView.buffer as ArrayBuffer;
|
||
}
|