<!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;
    }
    img {
        border: 1px solid black;
    }
</style>
<body>
    <b>The images of the  &lt;img&gt; elements should ignore their EXIF orientation.</b>
    <br>
    <br>
    <div class="container">
        <div class="horizontal">
            <img id="img1" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Normal
    </div>
    <div class="container">
        <div class="horizontal">
            <img id="img2" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Flipped horizontally
    </div>
    <div class="container">
        <div class="horizontal">
            <img id="img3" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Rotated 180&deg;
    </div>
    <div class="container">
        <div class="horizontal">
            <img id="img4" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Flipped vertically
    </div>
    <br>
    <div class="container">
        <div class="vertical">
            <img id="img5" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Rotated 90&deg; CCW and flipped vertically
    </div>
    <div class="container">
        <div class="vertical">
            <img id="img6" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Rotated 90&deg; CCW
    </div>
    <div class="container">
        <div class="vertical">
            <img id="img7" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Rotated 90&deg; CW and flipped vertically
    </div>
    <div class="container">
        <div class="vertical">
            <img id="img8" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Rotated 90&deg; CW
    </div>
    <br>
    <div class="container">
        <div class="horizontal">
            <img id="img9" src="resources/exif-orientation-1-ul.jpg">
        </div>
        <br>Undefined (invalid value)
    </div>
    <br>
    <ul id="console"></ul>
    <script>
        function log(str) {
            var li = document.createElement("li");
            li.appendChild(document.createTextNode(str));
            var console = document.getElementById("console");
            console.appendChild(li);
        }

          function imageSize(el) {
            var computedStyle = window.getComputedStyle(el);
            return computedStyle.width + " by " + computedStyle.height;
        }

         window.addEventListener('load', (event) => {
            for(var i = 1; i <= 9; i++)
                log("img" + i + " size = " + imageSize(document.getElementById("img" + i)));
        });
    </script>
</body>
