最新のすべてのブラウザーでサポートされている html5 の canvas 要素を検索することをお勧めします。
キャンバスはメディア (画像も含む) のクロス ドメイン ポリシーの対象となるため、jsfiddle サンプルを設定することはできません。だから私はあなたにアイデアを与えるためにここにサンプルを設定しました: HERE
ソースコードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTML5 Canvas</title>
<style type="text/css">
img{position:absolute;}
canvas{display:none;position:absolute;z-index:100;}
</style>
</head>
<body>
<img src="beach_volley_layout.jpg"></img>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
var canvas;
$('img').mouseover(function(){
canvas = createCanvasOverlay(this);
$(canvas).fadeIn(600);
}).mouseout(function(){
$(canvas).fadeOut(600);
});
function createCanvasOverlay(image) {
var canvas = document.createElement('canvas'),
canvasContext = canvas.getContext("2d");
// Make it the same size as the image
canvas.width = image.width;
canvas.height = image.height;
// Drawing the default version of the image on the canvas:
canvasContext.drawImage(image, 0, 0);
// Taking the image data and storing it in the imageData array:
var imageData = canvasContext.getImageData(0, 0, canvas.width, canvas.height),
data = imageData.data;
// Loop through all the pixels in the imageData array, and modify
// the red, green, and blue color values.
for (var i = 0, z = data.length; i < z; i++) {
// The values for red, green and blue are consecutive elements
// in the imageData array. We modify the three of them at once:
data[i] = ((data[i] < 128) ? (2 * data[i] * data[i] / 255) : 20);
data[++i] = ((data[i] < 128) ? (2 * data[i] * data[i] / 255) : (255 - 2 * (255 - data[i]) * (255 - data[i]) / 255));
data[++i] = ((data[i] < 128) ? (2 * data[i] * data[i] / 255) : 20);
// After the RGB elements is the alpha value, but we leave it the same.
++i;
}
// Putting the modified imageData back to the canvas.
canvasContext.putImageData(imageData, 0, 0);
// Inserting the canvas in the DOM, before the image:
image.parentNode.insertBefore(canvas, image);
return canvas;
}
</script>
</body>
</html>