How You Can Do Cool Image Effects Using HTML5 Canvas

You need to know how image filters work!  You’re writing an HTML5 application that works with images and you’d like to let your users dynamically alter the brightness of their images. Or maybe you’d like them to be able to give their image a vintage look…. or convert it to black and white to give that sense of drama…

Wouldn’t it be great if you knew how to apply cool image effects such as these from JavaScript dynamically? Would you like to learn the code behind how these image filters work? You totally can… This article will give you the fundamentals for basic image processing using the HTML5 Canvas API. You’ll learn how to write code that accesses an image’s pixel data and transforms this pixel data programmatically to perform cool image effects. Click here to try the sample app.

Read more »

Lights, Camera, Action!


So You Want to Access Your Webcam from Javascript?

Web Real-Time Communications or WebRTC is an exciting new HTML5 technology that not only gives JavaScript the ability to do peer-to-peer (P2P) audio/video conferencing and P2P data communications between browsers, it also lets you have programmatic access to attached cameras and microphones. Prior to WebRTC you had to rely on a browser plugin such as Adobe Flash to be able to do similar things. But recently there has been a big push to add these capabilites as intrinsic features to web browsers with Google really leading the charge and through standardization efforts by the W3C WebRTC working group. It is a brave new world in that only some browsers have added WebRTC support and even those that do can have subtle (and some not so subtle) differences in both interface and implementation. But more and more you’re seeing real applications appearing that are using WebRTC in very cool and interesting ways. One great example of WebRTC in action is a PhotoBooth-like app called WebCam Toy. This application should give you a sense of the possibilites that WebRTC is opening up.

In the rest of this article, I’m going to walk you through the minimum code needed to get your webcam to display video in your browser. The latest versions of Chrome or Firefox are recommended for running the code included in this article and for experimenting with WebRTC. If you already have one of these browsers you can try out my example.

So lets get started…

Read more »

Future of UI on the Web?

HTML+CSS suck for building apps.

There I said it… I mean lets face it, building apps in HTML+CSS is pretty much like doing word processing in LaTeX.  What ever happened to decent visual tools? And I’m tired of dealing with weird quirky layout issues.

Don’t get me wrong HTML for building apps is definitely (eh) OK and it’s been proven that you can create applications at scale with it.  But I think you end up working around quirks in layout behavior way too much.  HTML was originally designed for making non-wysiwyg “rich” text documents. The ability to build apps is bolted on and feels like it.

Also I can’t help but wonder will the pinnacle of visual application design tools be Interface Builder or Delphi.  I don’t think we’ve really moved forward in terms of the visual tools used to build apps since the advent of these tools.  Rich Internet Application frameworks and plugins like Flash and Silverlight (along with FlexBuilder and Blend) tried to solve this within the browser.  But it’s looking more and more like these are going to fizzle out of existence.

So What to Do?

Read more »

WebGL Sand Toy

Here is a little WebGL experiment I wrote in the form of a fun particle simulation.  Individual pixels from a photo are rendered as separate GL points.  The particle physics are done on the GPU using a shader.  Somewhat directly inspired by a little app that a friend of mine wrote years ago.  But this one is done solely in Javascript/WebGL in a browser rather than in native code.

Give it a try.

sandtoy
See my Experiment on ChromeExperiments.com