Upload
phil-reither
View
3.218
Download
3
Embed Size (px)
DESCRIPTION
Let's take a look at the HTML5 element canvas. See how you can draw shapes and images, manipulate single pixels and even animate it. Given as a lecture in the fh ooe in Hagenberg, Austria in December 2011.
Citation preview
HTML5 Canvas
The canvas isa 2d bitmap.
No layers.No undo.No objects.No moving stuff.
http://rawkes.com/lab/google-balls-logo
http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html
How can I
create a
canvas?
var canvas = document.getElementsById('a');
var ctx = canvas.getContext('2d');
JavaScript
<canvas id="a">fallback txt</canvas>HTML
I draw
squares.
ctx.fillStyle = 'blue';ctx.fillRect(0, 0, 150, 50);
ctx.strokeStyle = '#c66';ctx.lineWidth = 1;ctx.strokeRect(0.5, 60.5, 150, 50);
x width
height
y
context
I want to
draw an
image!
var img = new Image();img.onload = function() { ctx.drawImage(img, 0, 0);};img.src = 'nakedrobot.png';
x
when loaded
create image
y
image url
how can you
draw text?
ctx.font = 'bold 40px sans-serif';ctx.fillText('hello kitty', 5, 40);
x
css properties
y
hello kitty
bring me the pixels!
var w = canvas.width;var h = canvas.height;
var img = ctx.createImageData(w, h);for (var x = 0; x < w; x++) { for (var y = 0; y < h; y++) {
// each pixel has four values var idx = (x + y * w) * 4; // 0 red, 1 green, 2 blue, 3 alpha img.data[idx + 0] = x; img.data[idx + 1] = 255-x; img.data[idx + 2] = 0; img.data[idx + 3] = 255; }} ctx.putImageData(img, 0, 0); write to canvas
new image array
result
http://media.chikuyonok.ru/ambilight/
close pixealtehttp://desandro.com/resources/close-pixelate/
function tick() { doKeyboard(); updatePlayer(); doAI(); draw(); audio(); }var fps = 30;setInterval(tick, 1000/fps);
Animation
get input
updatedraw
every 30ms
function tick() { doKeyboard(); updatePlayer(); doAI(); draw(); audio();}
var fps = 30;setInterval(tick, 1000/fps);
How cani Save an Image?
var img = document. getElementsByTagName('img')[0];
var canvasImg = canvas.toDataURL("image/png");
img.src = canvasImg;
canvas image
“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...”
returns
67%Browser Support
http://weavesilk.com/
Summary Canvas<canvas> is a new 2d bitmap html element. you can draw primitives, images and pixels. There are no layers or object. If a pixel gets a new color, the old color is overwritten and lost.
A canvas is not “sandboxed” like flash and can be accessed and drawn on with javascript.
Material UsedBanksy “Have a Break” http://www.flickr.com/photos/loungerie/4109421950/
Banksy “Flowing off” http://www.flickr.com/photos/loungerie/4109420324/
Banksy “They’re Coming” http://www.flickr.com/photos/97041449@N00/4115205218/
Bansky “Tourqay Robot” http://en.wikipedia.org/wiki/File:Banksy_Torquay_robot_crop.jpg
Banksy “You have got to be kidding me” http://www.banksy.co.uk/
Banksy “follow your Dream” http://www.flickr.com/photos/thomashawk/6343586111/
Banksy “nola” http://www.flickr.com/photos/eddiedangerous/3045255243/
Banksy “Flower Pollard Street” http://www.flickr.com/photos/eddiedangerous/1800573742/
Banksy “what are you looking at?” http://www.flickr.com/photos/nolifebeforecoffee/124659356/
Banksy “Man and Picture of a dog” http://www.flickr.com/photos/atomicshed/141462789/
Banksy “Anti-Capitalism for sale” http://www.flickr.com/photos/jcodysimms/246024687/
Material Used3d teapot model http://resumbrae.com/ub/dms423_f08/10/
Metal Teapot http://www.flickr.com/photos/11273631@N08/2867342497/
furry teapot http://www.flickr.com/photos/11273631@N08/2867342461/
Television Icon http://thenounproject.com/noun/television/#icon-No416
Graphics Card http://www.flickr.com/photos/43779660@N00/218093887/
Banksy “under the Carpet” http://www.flickr.com/photos/acb/147223287/
Boxing http://www.flickr.com/photos/51035655711@N01/2826228569/