|
|
@@ -543,32 +543,36 @@ function getCanvas() {
|
|
|
|
|
|
function getToBlobPromise( canvas, mimeType ) {
|
|
|
|
|
|
- if ( canvas.toBlob !== undefined ) {
|
|
|
+ if ( typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas ) {
|
|
|
|
|
|
- return new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) );
|
|
|
+ let quality;
|
|
|
|
|
|
- }
|
|
|
+ // Blink's implementation of convertToBlob seems to default to a quality level of 100%
|
|
|
+ // Use the Blink default quality levels of toBlob instead so that file sizes are comparable.
|
|
|
+ if ( mimeType === 'image/jpeg' ) {
|
|
|
|
|
|
- let quality;
|
|
|
+ quality = 0.92;
|
|
|
|
|
|
- // Blink's implementation of convertToBlob seems to default to a quality level of 100%
|
|
|
- // Use the Blink default quality levels of toBlob instead so that file sizes are comparable.
|
|
|
- if ( mimeType === 'image/jpeg' ) {
|
|
|
+ } else if ( mimeType === 'image/webp' ) {
|
|
|
|
|
|
- quality = 0.92;
|
|
|
+ quality = 0.8;
|
|
|
|
|
|
- } else if ( mimeType === 'image/webp' ) {
|
|
|
+ }
|
|
|
|
|
|
- quality = 0.8;
|
|
|
+ return canvas.convertToBlob( {
|
|
|
|
|
|
- }
|
|
|
+ type: mimeType,
|
|
|
+ quality: quality
|
|
|
+
|
|
|
+ } );
|
|
|
|
|
|
- return canvas.convertToBlob( {
|
|
|
+ } else {
|
|
|
|
|
|
- type: mimeType,
|
|
|
- quality: quality
|
|
|
+ // HTMLCanvasElement code path
|
|
|
|
|
|
- } );
|
|
|
+ return new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) );
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|