1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Images Module Level 3: image-orientation: none</title>
<script src=/common/get-host-info.sub.js></script>
<link rel="author" title="Noam Rosenthal" href="mailto:noam@webkit.org">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5165">
<link rel="match" href="reference/image-orientation-none-cross-origin-canvas-ref.html">
<style>
img {display: none}
canvas {
width: 20px;
height: 20px;
margin: 10px;
}
</style>
<script>
const src1 = 'support/exif-orientation-1-ul.jpg';
const src2 = 'support/exif-orientation-3-lr.jpg';
function toCors(src) {
return src.replace(new URL(src).origin, get_host_info().HTTP_REMOTE_ORIGIN)
}
function createImage({cors, src, orientation, shouldBeRotated}) {
const img = document.createElement('img');
img.src = src
if (cors)
img.src = toCors(img.src)
img.style.imageOrientation = orientation
img.style.display = 'none'
img.dataset.shouldBeRotated = shouldBeRotated
document.body.appendChild(img)
return img
}
window.onload = () => {
const images = [
createImage({cors: true, src: src1, orientation: 'from-image', shouldBeRotated: false}),
createImage({cors: true, src: src1, orientation: 'none', shouldBeRotated: false}),
createImage({cors: true, src: src2, orientation: 'from-image', shouldBeRotated: true}),
createImage({cors: true, src: src2, orientation: 'none', shouldBeRotated: true}),
createImage({cors: false, src: src1, orientation: 'from-image', shouldBeRotated: false}),
createImage({cors: false, src: src1, orientation: 'none', shouldBeRotated: false}),
createImage({cors: false, src: src2, orientation: 'from-image', shouldBeRotated: true}),
createImage({cors: false, src: src2, orientation: 'none', shouldBeRotated: false}),
]
const dimension = 1
images.forEach(image => {
const canvas = document.createElement('canvas')
canvas.width = canvas.height = dimension
// The source of image-orientation preference for canvas drawImage
// is currently not standardized.
// See https://github.com/w3c/csswg-drafts/issues/4666
canvas.style.imageOrientation = image.style.imageOrientation
document.body.appendChild(canvas)
const ctx = canvas.getContext('2d')
const sx = image.dataset.shouldBeRotated === 'true' ? image.width * .8 : 0
const sy = image.dataset.shouldBeRotated === 'true' ? image.height * .8 : 0
ctx.drawImage(image, sx, sy, 1, 1, 0, 0, dimension, dimension)
})
}
</script>
</head>
<body>
<p>You should see 8 green rectangles, no red.</p>
</body>
<script>
[src1, src2].forEach(src => {
const img = document.createElement('img')
img.src = src
const imgCors = document.createElement('img')
imgCors.src = src
imgCors.src = toCors(imgCors.src)
document.body.appendChild(img)
document.body.appendChild(imgCors)
})
</script>
</html>
|