HTML and CSS Reference
In-Depth Information
The toDataURL() Method of the Canvas Object
toDataURL()
, which returns a string representing the canvas's image data. A call with no ar-
guments will return a string of image data of MIME type
image/png
. If you supply the
image/
jpg
as an argument, you can also supply a second argument between the numbers 0.0 and 1.0
that represents the quality/compression level of the image.
We are going to use
toDataURL()
to output the image data of the canvas into a
<textarea>
on our form and then open a window to display the actual image. This is just a simple way to
show that the function is working.
ThefirstthingwedoiscreateourlasttwoformcontrolsinHTMLforTextArranger.Westart
by creating a button with the
id
of
createImageData
that, when pressed, will create the im-
age data with a call to an event handler named
createImageDataPressed()
.
We also create a
<textarea>
named
imageDataDisplay
that will hold the text data of the
image after the
createImageData
button is pressed:
<input
<input type=
"button"
id=
"createImageData"
value=
"Create Image Data"
>
<br>
<br>
<br>
<br>
<textarea
<textarea id=
"imageDataDisplay"
rows=
10
cols=
30
></textarea>
></textarea>
Next, we set up the event listener for the
createImageData
button:
formElement
=
document
.
getElementById
(
"createImageData"
);
formElement
.
addEventListener
(
'click'
,
createImageDataPressed
,
false
false
);
Then,inthe
createImageDataPressed()
eventhandler,wecallthe
toDataURL()
methodof
the
Canvas
object (
theCanvas
) and set the value of the
imageDataDisplay <textarea>
to
the data returned from
toDataURL()
. Finally, using the image data as the URL for the win-
dow,wecall
window.open()
.When wedothis, awindowwill popopen,displaying the actu-
al image created from the canvas. (See
Figure 3-11
.) You can right-click and save this image,
just like any other image displayed in an HTML page. Pretty cool, eh?
function
function
createImageDataPressed
(
e
) {
var
var
imageDataDisplay
=
document
.
getElementById
(
'imageDataDisplay'
);
imageDataDisplay
.
value
=
theCanvas
.
toDataURL
();
window
.
open
(
imageDataDisplay
.
value
,
"canvasImage"
,
"left=0,top=0,width="
+
theCanvas
.
width
+
",height="
+
theCanvas
.
height
+