cvm-rs: allow setting JPEG quality from JS
This commit is contained in:
2
cvm-rs/index.d.ts
vendored
2
cvm-rs/index.d.ts
vendored
@@ -9,6 +9,7 @@ interface JpegInputArgs {
|
||||
height: number;
|
||||
stride: number; // The width of your input framebuffer OR your image width (if encoding a full image)
|
||||
buffer: Buffer;
|
||||
quality: number;
|
||||
|
||||
// TODO: Allow different formats, or export a boxed ffi object which can store a format
|
||||
// (i.e: new JpegEncoder(FORMAT_xxx)).
|
||||
@@ -20,6 +21,7 @@ interface JpegResizeInputArgs {
|
||||
desiredWidth: number; // dest width
|
||||
desiredHeight: number; // dest height
|
||||
buffer: Buffer; // source raw pixel buffer
|
||||
quality: number;
|
||||
}
|
||||
|
||||
/// Performs JPEG encoding.
|
||||
|
||||
@@ -47,6 +47,7 @@ pub struct JpegInputArgs {
|
||||
pub height: u32,
|
||||
pub stride: u32,
|
||||
pub buffer: napi::JsBuffer,
|
||||
pub quality: u32,
|
||||
}
|
||||
|
||||
#[napi(js_name = "jpegEncode")]
|
||||
@@ -69,7 +70,7 @@ pub fn jpeg_encode(env: Env, input: JpegInputArgs) -> napi::Result<napi::JsObjec
|
||||
|
||||
let vec = COMPRESSOR.with(|lazy| {
|
||||
let mut b = lazy.borrow_mut();
|
||||
b.set_quality(35);
|
||||
b.set_quality(input.quality);
|
||||
b.set_subsamp(turbojpeg_sys::TJSAMP_TJSAMP_420);
|
||||
b.compress_buffer(&image)
|
||||
});
|
||||
@@ -94,6 +95,7 @@ pub struct JpegResizeInputArgs {
|
||||
pub desired_width: u32,
|
||||
pub desired_height: u32,
|
||||
pub buffer: napi::JsBuffer,
|
||||
pub quality: u32,
|
||||
}
|
||||
|
||||
#[napi(js_name = "jpegResizeEncode")]
|
||||
@@ -136,7 +138,7 @@ pub fn jpeg_resize_and_encode(
|
||||
|
||||
let vec = COMPRESSOR.with(|lazy| {
|
||||
let mut b = lazy.borrow_mut();
|
||||
b.set_quality(35);
|
||||
b.set_quality(input.quality);
|
||||
b.set_subsamp(turbojpeg_sys::TJSAMP_TJSAMP_420);
|
||||
b.compress_buffer(&image)
|
||||
});
|
||||
|
||||
@@ -20,7 +20,8 @@ export class JPEGEncoder {
|
||||
width: rect.width,
|
||||
height: rect.height,
|
||||
stride: displaySize.width,
|
||||
buffer: canvas.subarray(offset)
|
||||
buffer: canvas.subarray(offset),
|
||||
quality: gJpegQuality
|
||||
});
|
||||
}
|
||||
|
||||
@@ -30,7 +31,8 @@ export class JPEGEncoder {
|
||||
height: size.height,
|
||||
desiredWidth: kThumbnailSize.width,
|
||||
desiredHeight: kThumbnailSize.height,
|
||||
buffer: buffer
|
||||
buffer: buffer,
|
||||
quality: Math.floor(gJpegQuality / 1.5)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user