Oke, ik denk dat ik een oplossing heb gevonden maar dat weet ik niet zeker.
Klik!
Demo, Klik!
Als ik dit zo lees dan klinkt het heel erg logisch en hoe de code werkt snap ik ook nog wel het een en ander.
Alleen, als je de demo bekijkt dan zie je dat er onderaan maar één knop staat. Als je daarop klikt dan word het 2e plaatje zwart/wit, precies op de manier zoals ik wil.
Wat ik alleen niet zou weten is hoe je dit script zo aanpast dat het ook weer kan omkeren en dat het via een hover effect werkt.
Als je met je muis over de afbeelding gaat word de afbeedling in kleur en als je met je muis van de afbeelding af gaat word hij weer zwart/wit.
Het liefst ook nog met een soort fade effect..
Dit is de index.html:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JavaScript Demos - Desaturate Image using JavaScript</title>
<script type="text/javascript" src="index_bestanden/jquery-1.js"></script>
<link href="index_bestanden/main.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
$(document).ready(function(){
$('#toggleDesaturate').click(function(){
var imgObj = document.getElementById('image');
if($.browser.msie){
grayscaleImageIE(imgObj);
} else {
imgObj.src = grayscaleImage(imgObj);
}
});
});
function grayscaleImageIE(imgObj)
{
imgObj.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayScale=1)';
}
function grayscaleImage(imgObj)
{
var canvas = document.createElement('canvas');
var canvasContext = canvas.getContext('2d');
var imgW = imgObj.width;
var imgH = imgObj.height;
canvas.width = imgW;
canvas.height = imgH;
canvasContext.drawImage(imgObj, 0, 0);
var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
for(var y = 0; y < imgPixels.height; y++){
for(var x = 0; x < imgPixels.width; x++){
var i = (y * 4) * imgPixels.width + x * 4;
var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
imgPixels.data[i] = avg;
imgPixels.data[i + 1] = avg;
imgPixels.data[i + 2] = avg;
}
}
canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
return canvas.toDataURL();
}
</script>
</head><body>
<div id="page">
<h1>How to Desaturate Images using JavaScript</h1>
<p>Click the button below the image to desaturate it.</p>
<div>
<p>
<strong>Original image:</strong><br>
<img src="index_bestanden/nature-1.jpg" alt="">
</p>
<p>
<strong>Image which will be desaturated:</strong><br>
<img src="index_bestanden/nature-1.jpg" alt="" id="image">
</p>
</div>
<form><button id="toggleDesaturate" type="button">Desaturate Image</button></form>
<div class="clear"></div>
<p class="tutorial">View Full Tutorial: <strong><a href="http://www.ajaxblender.com/howto-convert-image-to-grayscale-using-javascript.html" title="Permalink">How to Desaturate Images using JavaScript</a></strong></p>
<p class="about">The <a href="http://www.ajaxblender.com/about-us.html">ajaxBlender team</a>
specializes in web development to build advanced, interactive
JavaScript/AJAX web applications driven by jQuery, MooTools, Ext.JS,
and script.aculo.us on various server-side platforms including PHP and
ASP.NET.</p>
</div>
</body></html>
Hier staat de hele javascript code in die nodig is... Zou iemand me hierbij willen helpen?
Knijn
[Laatst bewerkt door Knijn op woensdag 9 december 2009, om 12:44]