add qoi upload support

This commit is contained in:
rubikscraft
2022-04-16 16:54:13 +02:00
parent cadb909c40
commit c7d1a16d9f
5 changed files with 52 additions and 15 deletions

View File

@@ -7,7 +7,7 @@ import {
SupportedMimeCategory
} from 'picsur-shared/dist/dto/mimes.dto';
import { AsyncFailable, Fail } from 'picsur-shared/dist/types';
import { QOIColorSpace, QOIencode } from 'qoi-img';
import { QOIColorSpace, QOIdecode, QOIencode } from 'qoi-img';
import sharp from 'sharp';
import { UsrPreferenceService } from '../../collections/preferencesdb/usrpreferencedb.service';
@@ -50,10 +50,12 @@ export class ImageProcessorService {
sharpImage = this.icoSharp(image);
} else if (mime.mime === ImageMime.BMP) {
sharpImage = this.bmpSharp(image);
} else if (mime.mime === ImageMime.QOI) {
sharpImage = this.qoiSharp(image);
} else {
sharpImage = sharp(image);
}
mime.mime = ImageMime.PNG;
mime.mime = ImageMime.QOI;
sharpImage = sharpImage.toColorspace('srgb');
@@ -111,4 +113,16 @@ export class ImageProcessorService {
},
});
}
private qoiSharp(image: Buffer) {
const result = QOIdecode(image);
return sharp(result.pixels, {
raw: {
width: result.width,
height: result.height,
channels: result.channels,
},
});
}
}