Pixel Manipulation
The setPixels()
method allows for modification of a specific section of pixels from the canvas.
To modify the pixels, you can loop through each pixel using the each
callback method.
The each
callback function accepts two parameters:
- An object containing the properties for red, green, blue, and alpha color values (
r
,g
,b
,a
) - The parameters passed to the
setPixels()
method
Basic usage
function invert() { $(this).setPixels({ x: 150, y: 100, width: 220, height: 138, // loop through each pixel each: function (px) { px.r = 255 - px.r; px.g = 255 - px.g; px.b = 255 - px.b; } });}
$('canvas').drawImage({ source: 'images/fish.jpg', x: 150, y: 100, // Invert image color when image loads load: invert});
Pixels and Events
In this example, hovering over the image will manipulate the pixels closest to the part you hovered over.
// For better canvas performance when frequently reading// image data, Chrome recommends we instruct the browser// to use a software-rendered canvas, rather than a// hardware-accelerated canvas$.jCanvas.defaults.willReadFrequently = true;
function invert(params) { $(this).setPixels({ x: params.eventX, y: params.eventY, width: 50, height: 50, // loop through each pixel each: function (px) { px.r = 255 - px.r; px.g = 255 - px.g; px.b = 255 - px.b; } });}
$('canvas').drawImage({ layer: true, source: 'images/fish.jpg', x: 150, y: 100, mousemove: invert});
Notes
If the width
, and height
properties are not specified, the method loops through every pixel on the canvas.
The r
, g
, b
, and a
properties all range from 0
to 255
.
As with all jCanvas methods, the setPixels()
method respects the value of the fromCenter
property, which defaults to true
.