Public
Edited
Sep 4, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
function brightness(data, delta) {
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = data[i + 0] + delta;
data[i + 1] = data[i + 1] + delta;
data[i + 2] = data[i + 2] + delta;
}
}
Insert cell
function multiplication(data, factor) {
for (let i = 0; i < data.length; i += 4) {
data[i + 0] *= factor;
data[i + 1] *= factor;
data[i + 2] *= factor;
}
}
Insert cell
function contrast(data, factor) {
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = (data[i + 0] - 127) * factor + 127;
data[i + 1] = (data[i + 1] - 127) * factor + 127;
data[i + 2] = (data[i + 2] - 127) * factor + 127;
}
}
Insert cell
function gamma(data, power) {
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = 255 * Math.pow(data[i + 0] / 255, power);
data[i + 1] = 255 * Math.pow(data[i + 1] / 255, power);
data[i + 2] = 255 * Math.pow(data[i + 2] / 255, power);
}
}
Insert cell
function mask(data, nbits) {
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = (data[i + 0] >> nbits) << nbits;
data[i + 1] = (data[i + 1] >> nbits) << nbits;
data[i + 2] = (data[i + 2] >> nbits) << nbits;
}
}
Insert cell
function xor(data, nbits) {
const datamask = ( 0xff) >>(8-nbits);
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = (data[i + 0] ^ datamask);
data[i + 1] = (data[i + 1] ^ datamask);
data[i + 2] = (data[i + 2] ^ datamask);
}
}
Insert cell
// url = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Cappuchin_Bridge_(30706076020).jpg/1079px-Cappuchin_Bridge_(30706076020).jpg"
Insert cell
url = "https://pbs.twimg.com/media/F0milJeXsAANd6v?format=jpg&name=small"
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more