chromium/third_party/blink/web_tests/images/color-profile-image-canvas-pattern.html

<!DOCTYPE html>
<html>
<script src="../resources/run-after-layout-and-paint.js"></script>

<style>
  canvas { will-change: opacity; }
  img, canvas { margin: 5px; width: 48% }
</style>

<body style="overflow: hidden">
  <!-- The _blue_ sector of the <img> image should be at 12 o'clock. -->
  <img>
  <!-- The red sector of the <canvas> image should be at 12 o'clock. -->
  <canvas></canvas>
</body>

<script>
window.onload = function() {
  var image = document.querySelector('img');

  image.onload = function() {
    runAfterLayoutAndPaint(drawImagePatternToCanvas);
  };

  image.src = 'resources/red-at-12-oclock-with-color-profile.jpg';
};

function drawImagePatternToCanvas() {
  var canvas = document.querySelector('canvas');
  var ctx = canvas.getContext('2d');
  var pattern = ctx.createPattern(document.querySelector('img'), null);
  var scale = 0.1870;

  ctx.clearRect(0, 0, canvas.width = 300, canvas.height = 300);
  ctx.save();
  ctx.scale(scale, scale);
  ctx.fillStyle = pattern;
  ctx.fillRect(0, 0, canvas.width / scale, canvas.height / scale);
  ctx.restore();

  if (window.testRunner)
    testRunner.notifyDone();
}

if (window.testRunner)
  testRunner.waitUntilDone();
</script>
</html>