Application Tile Stamper
We are going to create a simple application that will allow the user to
highlight a box around some pixels on an image, copy them, and then use
them as a stamp to paint back to the canvas. It will not be a full-blown
editing application by any means—it’s just a demonstration of one use
of the ImageData
object.
Note
This application will need to be run from a local or remote web
server, because most browsers will throw an exception if an
application attempts to call getImageData()
on a file—even in the same
folder on a local machine. The current version of Safari (6.02) does
not throw this error.
To create this simple application, we will use the tile sheet from earlier in this chapter. The user will click on a spot on the tile sheet, highlighting a 32×32 square tile. That tile can then be painted onto the bottom section of the canvas. To demonstrate pixel manipulation, we will set the color of the pixels to a new alpha value before they are painted to the screen. This will be the humble beginning for making our own tile map editor.
Once again, we will use the tanks_sheet.png file from Figure 4-7.
How ImageData.data is organized
The ImageData.data
attribute
is a single-dimensional array containing four bytes for every pixel in
the ImageData
object. We will be
using 32×32 tiles in our example application. A 32×32 tile contains
1,024 pixels (or 1K of data). The ImageData.data
attribute for an ImageData
instance that holds a 32×32 image would be 4,096 bytes (or 4K). ...
Get HTML5 Canvas, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.