<!DOCTYPE html>
<html>
<body>
<script>
var imgHeight = 1024;
var imgWidth = 1024;
var canvas = document.createElement("canvas");
canvas.width = imgWidth;
canvas.height = imgHeight;
var context = canvas.getContext('2d');
var image = context.createImageData(imgWidth, imgHeight);
document.body.appendChild(canvas);
function rand(range) {
return Math.floor(Math.random() * range);
}
function initializeImageData() {
for(var i = 0; i < image.data.length; i++)
image.data[i] = rand(256);
context.putImageData(image, 0, 0);
}
function imageBitmapFromImageData() {
// The return Promise is not retained because this test is meant to only
// measure the immediate run time of createImageBitmap from an ImageData,
// which is known to be implemented in a way that does all the work
// synchronously, even though the API is technically async.
createImageBitmap(image, 0, 0, imgWidth, imgHeight);
}
function doRun() {
// Make and fill many canvases
initializeImageData();
imageBitmapFromImageData();
requestAnimationFrame(doRun);
}
window.onload = function () {
doRun();
}
</script>
</body>
</html>