cvm-rs: Add jpegResizeEncode(), remove usage of sharp
sharp sucks.
This commit is contained in:
@@ -22,7 +22,6 @@
|
||||
"mnemonist": "^0.39.5",
|
||||
"msgpackr": "^1.10.2",
|
||||
"pino": "^9.3.1",
|
||||
"sharp": "^0.33.3",
|
||||
"toml": "^3.0.0",
|
||||
"ws": "^8.17.1"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Size, Rect } from './Utilities';
|
||||
import sharp from 'sharp';
|
||||
import * as cvm from '@cvmts/cvm-rs';
|
||||
|
||||
// A good balance. TODO: Configurable?
|
||||
@@ -10,17 +9,6 @@ const kThumbnailSize: Size = {
|
||||
height: 300
|
||||
};
|
||||
|
||||
// this returns appropiate Sharp options to deal with CVMTS raw framebuffers
|
||||
// (which are RGBA bitmaps, essentially. We probably should abstract that out but
|
||||
// that'd mean having to introduce that to rfb and oihwekjtgferklds;./tghnredsltg;erhds)
|
||||
function GetRawSharpOptions(size: Size): sharp.CreateRaw {
|
||||
return {
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
channels: 4
|
||||
};
|
||||
}
|
||||
|
||||
export class JPEGEncoder {
|
||||
static SetQuality(quality: number) {
|
||||
gJpegQuality = quality;
|
||||
@@ -37,16 +25,12 @@ export class JPEGEncoder {
|
||||
}
|
||||
|
||||
static async EncodeThumbnail(buffer: Buffer, size: Size): Promise<Buffer> {
|
||||
let { data, info } = await sharp(buffer, { raw: GetRawSharpOptions(size) })
|
||||
.resize(kThumbnailSize.width, kThumbnailSize.height, { fit: 'fill' })
|
||||
.raw()
|
||||
.toBuffer({ resolveWithObject: true });
|
||||
|
||||
return cvm.jpegEncode({
|
||||
width: kThumbnailSize.width,
|
||||
height: kThumbnailSize.height,
|
||||
stride: kThumbnailSize.width,
|
||||
buffer: data
|
||||
return cvm.jpegResizeEncode({
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
desiredWidth: kThumbnailSize.width,
|
||||
desiredHeight: kThumbnailSize.height,
|
||||
buffer: buffer
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user