DEV Community

Conmann
Conmann

Posted on

Getting pixel color from canvas

Ever had a problem getting the color of a pixel from a canvas? Well I spent a week figuring it out so you don't have to.

function getColorOnCanvas(x, y, canvasElement){
    let imageData = canvasElement.getContext('2d').getImageData(0,0,canvasElement.width, canvasElement.height).data;
    let f = function(x1,y1,width){return y1 * (width * 4) + x1 * 4;}

    let red = imageData[f(x,y,canvasElement.width)];
    let green = imageData[f(x,y,canvasElement.width)+1];
    let blue = imageData[f(x,y,canvasElement.width)+2];
    let alpha = imageData[f(x,y,canvasElement.width)+3];

    return {
        red: red,
        green: green,
        blue: blue,
        alpha: alpha
    };
};
Enter fullscreen mode Exit fullscreen mode

or, if you're feeling fancy

function getColorOnCanvas(x, y, canvasElement, canvasContext){
    let imageData = canvasContext.getImageData(0,0,canvasElement.width, canvasElement.height).data;
    let f = function(x1,y1,width){return y1 * (width * 4) + x1 * 4;}

    let red = imageData[f(x,y,canvasElement.width)];
    let green = imageData[f(x,y,canvasElement.width)+1];
    let blue = imageData[f(x,y,canvasElement.width)+2];
    let alpha = imageData[f(x,y,canvasElement.width)+3];

    return {
        red: red,
        green: green,
        blue: blue,
        alpha: alpha
    };
};
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

SurveyJS custom survey software

JavaScript Form Builder UI Component

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay