diff --git a/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html b/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html index 8b2a33e85b1ff0..ee7023a398839d 100644 --- a/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html +++ b/html/canvas/element/manual/imagebitmap/createImageBitmap-exif-orientation.html @@ -13,11 +13,11 @@ }); } -function checkColors(ctx, w, h, expectedColors) { +function checkColors(ctx, w, h, tileW, tileH, expectedColors) { let data = ctx.getImageData(0, 0, w, h).data; for (let [row, col, r, g, b, a] of expectedColors) { - let x = col * 80 + 40; - let y = row * 80 + 40; + let x = col * tileW + tileW / 2; + let y = row * tileH + tileH / 2; let i = (x + y * w) * 4; let expected = [r, g, b, a]; @@ -38,7 +38,7 @@ .then((image) => createImageBitmap(image)) .then(t.step_func_done(function(imageBitmap) { ctx.drawImage(imageBitmap, 0, 0); - checkColors(ctx, canvas.width, canvas.height, [ + checkColors(ctx, canvas.width, canvas.height, 80, 80, [ // row, col, r, g, b, a [0, 0, 255, 0, 0, 255], [0, 1, 0, 255, 0, 255], @@ -63,7 +63,7 @@ .then((image) => createImageBitmap(image, { imageOrientation: "flipY" })) .then(t.step_func_done(function(imageBitmap) { ctx.drawImage(imageBitmap, 0, 0); - checkColors(ctx, canvas.width, canvas.height, [ + checkColors(ctx, canvas.width, canvas.height, 80, 80, [ // row, col, r, g, b, a [0, 0, 255, 128, 128, 255], [0, 1, 128, 255, 128, 255], @@ -88,7 +88,7 @@ .then(image => createImageBitmap(image, 80, 0, 160, 160)) .then(t.step_func_done(function(imageBitmap) { ctx.drawImage(imageBitmap, 0, 0); - checkColors(ctx, canvas.width, canvas.height, [ + checkColors(ctx, canvas.width, canvas.height, 80, 80, [ // row, col, r, g, b, a [0, 0, 0, 255, 0, 255], [0, 1, 0, 0, 255, 255], @@ -109,7 +109,7 @@ .then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY" })) .then(t.step_func_done(function(imageBitmap) { ctx.drawImage(imageBitmap, 0, 0); - checkColors(ctx, canvas.width, canvas.height, [ + checkColors(ctx, canvas.width, canvas.height, 80, 80, [ // row, col, r, g, b, a [0, 0, 128, 255, 128, 255], [0, 1, 128, 128, 255, 255], @@ -118,4 +118,72 @@ ]); })); }, "createImageBitmap with EXIF rotation, imageOrientation flipY, and cropping"); + +async_test(function(t) { + const canvas = document.createElement("canvas"); + canvas.width = 160; + canvas.height = 80; + document.body.append(canvas); + + const ctx = canvas.getContext("2d"); + loadImage("resources/squares_6.jpg") + .then((image) => createImageBitmap(image, { resizeWidth:160, resizeHeight:80} )) + .then(t.step_func_done(function(imageBitmap) { + ctx.drawImage(imageBitmap, 0, 0); + checkColors(ctx, canvas.width, canvas.height, 40, 40, [ + // row, col, r, g, b, a + [0, 0, 255, 0, 0, 255], + [0, 1, 0, 255, 0, 255], + [0, 2, 0, 0, 255, 255], + [0, 3, 0, 0, 0, 255], + [1, 0, 255, 128, 128, 255], + [1, 1, 128, 255, 128, 255], + [1, 2, 128, 128, 255, 255], + [1, 3, 128, 128, 128, 255], + ]); + })); +}, "createImageBitmap with EXIF rotation, imageOrientation from-image, no cropping, and resize"); + +async_test(function(t) { + const canvas = document.createElement("canvas"); + canvas.width = 80; + canvas.height = 80; + document.body.append(canvas); + + const ctx = canvas.getContext("2d"); + loadImage("resources/squares_6.jpg") + .then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY", resizeWidth:80, resizeHeight:80 })) + .then(t.step_func_done(function(imageBitmap) { + ctx.drawImage(imageBitmap, 0, 0); + checkColors(ctx, canvas.width, canvas.height, 40, 40, [ + // row, col, r, g, b, a + [0, 0, 128, 255, 128, 255], + [0, 1, 128, 128, 255, 255], + [1, 0, 0, 255, 0, 255], + [1, 1, 0, 0, 255, 255], + ]); + })); +}, "createImageBitmap with EXIF rotation, imageOrientation flipY, cropping, and resize"); + +async_test(function(t) { + const canvas = document.createElement("canvas"); + canvas.width = 80; + canvas.height = 40; + document.body.append(canvas); + + const ctx = canvas.getContext("2d"); + loadImage("resources/squares_6.jpg") + .then(image => createImageBitmap(image, 80, 0, 160, 160, { imageOrientation: "flipY", resizeWidth:80, resizeHeight:40 })) + .then(t.step_func_done(function(imageBitmap) { + ctx.drawImage(imageBitmap, 0, 0); + checkColors(ctx, canvas.width, canvas.height, 40, 20, [ + // row, col, r, g, b, a + [0, 0, 128, 255, 128, 255], + [0, 1, 128, 128, 255, 255], + [1, 0, 0, 255, 0, 255], + [1, 1, 0, 0, 255, 255], + ]); + })); +}, "createImageBitmap with EXIF rotation, imageOrientation flipY, cropping, and nonuniform resize"); +