| <!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> |