30 lines
698 B
TypeScript
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
|
||
|
)
|
||
|
);
|
||
|
}
|