Hallo zusammen,
ich will einen Bildrasterungsfilter mit Rastergröße, die über einen Schieberegler ausgewählt werden kann, programmieren.
Was habe ich falsch gemacht?
Danke im Voraus!
ich will einen Bildrasterungsfilter mit Rastergröße, die über einen Schieberegler ausgewählt werden kann, programmieren.
Was habe ich falsch gemacht?
Danke im Voraus!
HTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Pixel</title>
<script type="text/javascript">
window.addEventListener('load', canvasApp, false);
function canvasApp() {
if (!document.createElement('canvas').getContext) {
return;
}
//Event Listener für Änderungen der Rastergröße
document.getElementById("sizeInput").addEventListener("change", onSizeChange);
var theCanvas = document.getElementById('canvas');
var context = theCanvas.getContext('2d');
var image = new Image();
image.addEventListener('load', onImageLoaded);
image.src = 'bild.jpg';
var imgWidth;
var imgHeight;
function onImageLoaded(e) {
imgWidth = image.width;
imgHeight = image.height;
drawCanvas();
}
function drawCanvas() {
context.drawImage(image, 0, 0);
var imgData = context.getImageData(0, 0, imgWidth, imgHeight);
var rasterSize = size;
for (var x = 0; x < imgData.width; x++) {
for (var y = 0; x < imgData.height; y++) {
var rasterX = ((x / rasterSize | 0) * rasterSize);
var rasterY = ((y / rasterSize | 0) * rasterSize);
var rasterValIndex = (rasterX + rasterY * imgData.width) * 4;
r = imgData.data[rasterValIndex];
g = imgData.data[rasterValIndex + 1];
b = imgData.data[rasterValIndex + 2];
a = imgData.data[rasterValIndex + 3];
// Pixel setzen in x, y
imgData.data[rasterValIndex++] = 255;
imgData.data[rasterValIndex++] = 0;
imgData.data[rasterValIndex++] = 0;
imgData.data[rasterValIndex] = 255;
}
context.putImageData(imgData, 0, 0);
}
function onSizeChange(e) {
size = e.target.value;
drawCanvas();
}
}
</script>
</head>
<body>
<div style="position: absolute; top: 0; left: 0;">
<canvas id="canvas" width="615" height="410" >
Your browser does not support the HTML 5 Canvas.
</canvas>
<form>
<input type="range" id="sizeInput" min="2" max="100" step="1" value="100">
</form>
</div>
</body>
</html>
Zuletzt bearbeitet: