| <!DOCTYPE html> |
| <style> |
| div.container { |
| display: inline-block; |
| margin-right: 20px; |
| margin-bottom: 10px; |
| width: 100px; |
| vertical-align: top; |
| } |
| div.horizontal { |
| width: 102px; |
| height: 52px; |
| } |
| div.vertical { |
| width: 52px; |
| height: 102px; |
| } |
| canvas { |
| border: 1px solid black; |
| } |
| canvas.horizontal { |
| width: 100px; |
| height: 50px; |
| } |
| canvas.vertical { |
| width: 50px; |
| height: 100px; |
| } |
| </style> |
| <body> |
| <b>CanvasRenderingContext2D.drawImage() should rotate the images respecting their EXIF orientation.</b> |
| <br> |
| <br> |
| <div class ="container"> |
| <div class ="horizontal"> |
| <canvas class="horizontal" id="canvas1"></canvas> |
| </div> |
| <br>Normal |
| </div> |
| <div class ="container"> |
| <div class ="horizontal"> |
| <canvas class="horizontal" id="canvas2"></canvas> |
| </div> |
| <br>Flipped horizontally |
| </div> |
| <div class ="container"> |
| <div class ="horizontal"> |
| <canvas class="horizontal" id="canvas3"></canvas> |
| </div> |
| <br>Rotated 180° |
| </div> |
| <div class ="container"> |
| <div class ="horizontal"> |
| <canvas class="horizontal" id="canvas4"></canvas> |
| </div> |
| <br>Flipped vertically |
| </div> |
| <br> |
| <div class ="container"> |
| <div class ="vertical"> |
| <canvas class="vertical" id="canvas5"></canvas> |
| </div> |
| <br>Rotated 90° CCW and flipped vertically |
| </div> |
| <div class ="container"> |
| <div class ="vertical"> |
| <canvas class="vertical" id="canvas6"></canvas> |
| </div> |
| <br>Rotated 90° CCW |
| </div> |
| <div class ="container"> |
| <div class ="vertical"> |
| <canvas class="vertical" id="canvas7"></canvas> |
| </div> |
| <br>Rotated 90° CW and flipped vertically |
| </div> |
| <div class ="container"> |
| <div class ="vertical"> |
| <canvas class="vertical" id="canvas8"></canvas> |
| </div> |
| <br>Rotated 90° CW |
| </div> |
| <br> |
| <div class ="container"> |
| <div class ="horizontal"> |
| <canvas class="horizontal" id="canvas9"></canvas> |
| </div> |
| <br>Undefined (invalid value) |
| </div> |
| <script> |
| if (window.testRunner) |
| window.testRunner.waitUntilDone(); |
| |
| window.onload = function() { |
| var names = [ |
| { resource: "resources/exif-orientation-1-ul.jpg", id : "canvas1" }, |
| { resource: "resources/exif-orientation-2-ur.jpg", id : "canvas2" }, |
| { resource: "resources/exif-orientation-3-lr.jpg", id : "canvas3" }, |
| { resource: "resources/exif-orientation-4-lol.jpg", id : "canvas4" }, |
| { resource: "resources/exif-orientation-5-lu.jpg", id : "canvas5" }, |
| { resource: "resources/exif-orientation-6-ru.jpg", id : "canvas6" }, |
| { resource: "resources/exif-orientation-7-rl.jpg", id : "canvas7" }, |
| { resource: "resources/exif-orientation-8-llo.jpg", id : "canvas8" }, |
| { resource: "resources/exif-orientation-9-u.jpg", id : "canvas9" } |
| ]; |
| |
| var drawCount = 0; |
| |
| names.forEach(function(name) { |
| var image = new Image; |
| image.src = name.resource; |
| image.decode().then(() => { |
| let canvas = document.getElementById(name.id); |
| canvas.width = image.width; |
| canvas.height = image.height; |
| let context = canvas.getContext("2d"); |
| context.drawImage(image, 0, 0, canvas.width, canvas.height); |
| if (++drawCount == names.length) { |
| if (window.testRunner) |
| window.testRunner.notifyDone(); |
| } |
| }); |
| }); |
| } |
| </script> |
| </body> |