Public
Edited
Mar 12, 2023
Insert cell
Insert cell
Insert cell
Insert cell
operation
Insert cell
canvas1 = {
const canvas = DOM.canvas(imageTest.naturalWidth, imageTest.naturalHeight);
const context = canvas.getContext("2d");
canvas.style =
"image-rendering: pixelated; image-rendering: crisp-edges; width: 100%;";

context.drawImage(
imageTest,
0,
0,
imageTest.naturalWidth,
imageTest.naturalHeight
);

const imageData = context.getImageData(
0,
0,
imageTest.naturalWidth,
imageTest.naturalHeight
);
const operations = { brightness, colorshift };

operations[operation](imageData.data, amount);

brightness(imageData.data, amount);
// make15Bit(imageData, amount);

context.putImageData(imageData, 0, 0);

return canvas;
}
Insert cell
height = 200
Insert cell
w = 200
Insert cell
wasmMemory = new Uint8Array(height * w * 4 * 4) // pretend this is the wasm memory
Insert cell
outputPointer = 1024 // rustWasm.get_output_buffer_pointer();
Insert cell
imageDataArray = wasmMemory.slice(outputPointer, outputPointer + height * w * 4)
Insert cell
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Cappuchin_Bridge_(30706076020).jpg/1079px-Cappuchin_Bridge_(30706076020).jpg"
Insert cell
imageTest = d3.image(url, { crossOrigin: "anonymous" })
//imageTest = FileAttachment("Cappuchin_Bridge_16.jpg").image()
Insert cell
imageTest.naturalWidth
Insert cell
imageTest.naturalHeight
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 colorshift(data, shift) {
let mask = (0xff >> shift) << shift;
for (let i = 0; i < data.length; i += 4) {
data[i + 0] = data[i + 0] & mask;
data[i + 1] = data[i + 1] & mask;
data[i + 2] = data[i + 2] & mask;
}
}
Insert cell
function mask(shift) {
return (0xff >> shift) << shift;
}
Insert cell
mask(7)
Insert cell
d3 = require("d3@5")
Insert cell
import { radio, slider } from "@jashkenas/inputs"
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