chromium/third_party/blink/web_tests/images/cmyk-jpeg-with-color-profile.html

<!DOCTYPE html>
<title>Test that we can render a CMYK JPEG without color corruption.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script type="text/javascript">
async_test(function(t) {
    // The colors used for verifying the test results.
    var red = 0, green = 0, blue = 0, alpha = 0;
    // Create a canvas element. This element is used for pasting a CMYK JPEG and
    // reading its pixels.
    var canvas = document.createElement("canvas");
    canvas.width = 64;
    canvas.height = 64;
    // Create an image object and load a CMYK JPEG.
    var image = new Image();
    image.onload = t.step_func_done(function() {
        // Paste the loaded JPEG ('resources/cmyk-jpeg.jpg') to the canvas.
        var context = canvas.getContext("2d");
        context.drawImage(image, 0, 0);

        // Read the pixels in the canvas and calculate their average values.
        // (DumpRenderTree always allows to read them.)
        var data = context.getImageData(0, 0, canvas.width, canvas.height);
        var pixels = canvas.width * canvas.height;
        for (var i = 0; i < pixels * 4; i += 4) {
            red += data.data[i + 0];
            green += data.data[i + 1];
            blue += data.data[i + 2];
            alpha += data.data[i + 3];
        }
        red   /= pixels;
        green /= pixels;
        blue  /= pixels;
        alpha /= pixels;

        // Even though the output colors depend on color-profiles (i.e. they depend
        // on devices), green must be the most prominent color because the source
        // image only consists of green. So, we test it.
        assert_greater_than(green, red);
        assert_greater_than(green, blue);
    });
    image.src = "resources/cmyk-jpeg.jpg";
});
</script>