Signal-Desktop/ts/util/canvasToBlob.ts

30 lines
698 B
TypeScript

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { IMAGE_JPEG } from '../types/MIME';
/**
* Similar to [the built-in `toBlob` method][0], but returns a Promise.
*
* [0]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob
*/
export async function canvasToBlob(
canvas: HTMLCanvasElement,
mimeType = IMAGE_JPEG,
quality?: number
): Promise<Blob> {
return new Promise((resolve, reject) =>
canvas.toBlob(
result => {
if (result) {
resolve(result);
} else {
reject(new Error("Couldn't convert the canvas to a Blob"));
}
},
mimeType,
quality
)
);
}