| |
| |
|
|
| |
| |
|
|
| |
| function arrayToImageData(input: any, width: number, height: number, binary: boolean) { |
| let [r, g, b, a] = [0, 114, 189, 255]; |
| let [r_bg, g_bg, b_bg, a_bg] = [0, 0, 0, 0]; |
| if (binary) { |
| [r, g, b, a] = [255, 255, 255, 255]; |
| [r_bg, g_bg, b_bg, a_bg] = [0, 0, 0, 255]; |
| } |
| |
| const arr = new Uint8ClampedArray(4 * width * height).fill(0); |
| for (let i = 0; i < input.length; i++) { |
|
|
| |
| |
| |
| if (input[i] > 0.0) { |
| arr[4 * i + 0] = r; |
| arr[4 * i + 1] = g; |
| arr[4 * i + 2] = b; |
| arr[4 * i + 3] = a; |
| } else if (binary){ |
| arr[4 * i + 0] = r_bg; |
| arr[4 * i + 1] = g_bg; |
| arr[4 * i + 2] = b_bg; |
| arr[4 * i + 3] = a_bg; |
| } |
| } |
| return new ImageData(arr, height, width); |
| } |
|
|
| |
| function imageDataToImage(imageData: ImageData) { |
| const canvas = imageDataToCanvas(imageData); |
| const image = new Image(); |
| image.src = canvas.toDataURL(); |
| return image; |
| } |
|
|
| function imageDataToURL(imageData: ImageData) { |
| const canvas = imageDataToCanvas(imageData); |
| return canvas.toDataURL(); |
| } |
|
|
| |
| function imageDataToCanvas(imageData: ImageData) { |
| const canvas = document.createElement("canvas"); |
| const ctx = canvas.getContext("2d"); |
| canvas.width = imageData.width; |
| canvas.height = imageData.height; |
| ctx?.putImageData(imageData, 0, 0); |
| return canvas; |
| } |
|
|
| |
| function onnxMaskToImage(input: any, width: number, height: number, binary: boolean) { |
| return imageDataToImage(arrayToImageData(input, width, height, binary)); |
| } |
|
|
| export { arrayToImageData, imageDataToImage, onnxMaskToImage, imageDataToURL }; |
|
|