allow js to set jpeg quality
This commit is contained in:
parent
b127e37323
commit
ce6f37e229
4 changed files with 13 additions and 7 deletions
|
@ -14,6 +14,7 @@ export class JPEGEncoder {
|
|||
width: rect.width,
|
||||
height: rect.height,
|
||||
stride: displaySize.width,
|
||||
quality: gJpegQuality,
|
||||
buffer: canvas.subarray(offset)
|
||||
});
|
||||
}
|
||||
|
|
12
jpeg-rs/index.d.ts
vendored
12
jpeg-rs/index.d.ts
vendored
|
@ -1,15 +1,15 @@
|
|||
//
|
||||
|
||||
interface JpegInputArgs {
|
||||
width: number,
|
||||
height: number,
|
||||
stride: number, // The width of your input framebuffer OR your image width (if encoding a full image)
|
||||
buffer: Buffer
|
||||
width: number;
|
||||
height: number;
|
||||
stride: number; // The width of your input framebuffer OR your image width (if encoding a full image)
|
||||
quality: number | undefined;
|
||||
buffer: Buffer;
|
||||
|
||||
// TODO: Allow different formats, or export a boxed ffi object which can store a format
|
||||
// (i.e: new JpegEncoder(FORMAT_xxx)).
|
||||
}
|
||||
|
||||
/// Performs JPEG encoding.
|
||||
export function jpegEncode(input: JpegInputArgs) : Promise<Buffer>;
|
||||
|
||||
export function jpegEncode(input: JpegInputArgs): Promise<Buffer>;
|
||||
|
|
Binary file not shown.
|
@ -31,6 +31,11 @@ fn jpeg_encode_impl<'a>(cx: &mut FunctionContext<'a>) -> JsResult<'a, JsPromise>
|
|||
let width: u64 = input.get::<JsNumber, _, _>(cx, "width")?.value(cx) as u64;
|
||||
let height: u64 = input.get::<JsNumber, _, _>(cx, "height")?.value(cx) as u64;
|
||||
let stride: u64 = input.get::<JsNumber, _, _>(cx, "stride")?.value(cx) as u64;
|
||||
let quality : u64 = if let Ok(val) = input.get::<JsNumber, _, _>(cx, "quality") {
|
||||
val.value(cx) as u64
|
||||
} else {
|
||||
35u64
|
||||
};
|
||||
let buffer: Handle<JsBuffer> = input.get(cx, "buffer")?;
|
||||
|
||||
let (deferred, promise) = cx.promise();
|
||||
|
@ -65,7 +70,7 @@ fn jpeg_encode_impl<'a>(cx: &mut FunctionContext<'a>) -> JsResult<'a, JsPromise>
|
|||
|
||||
let vec = COMPRESSOR.with(|lazy| {
|
||||
let mut b = lazy.borrow_mut();
|
||||
b.set_quality(35);
|
||||
b.set_quality(quality as u32);
|
||||
b.set_subsamp(turbojpeg_sys::TJSAMP_TJSAMP_420);
|
||||
b.compress_buffer(&image)
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue