blob: 2efc3736872919341297f26f920313a2b4bfd092 [file] [log] [blame]
Joe Malin9a7eab82010-10-18 17:07:45 -07001page.title=MonkeyImage
Scott Main9cf2fa02011-02-15 18:26:07 -08002parent.title=monkeyrunner
3parent.link=index.html
Joe Malin9a7eab82010-10-18 17:07:45 -07004@jd:body
5<style>
6 h4.jd-details-title {background-color: #DEE8F1;}
7</style>
8
9<p>
10 A monkeyrunner class to hold an image of the device or emulator's screen. The image is
11 copied from the screen buffer during a screenshot. This object's methods allow you to
12 convert the image into various storage formats, write the image to a file, copy parts of
13 the image, and compare this object to other <code>MonkeyImage</code> objects.
14</p>
15<p>
16 You do not need to create new instances of <code>MonkeyImage</code>. Instead, use
17<code><a href="{@docRoot}guide/developing/tools/MonkeyDevice.html#takeSnapshot">
18MonkeyDevice.takeSnapshot()</a></code> to create a new instance from a screenshot. For example, use:
19</p>
20<pre>
21newimage = MonkeyDevice.takeSnapshot()
22</pre>
23<h2>Summary</h2>
24<table id="pubmethods" class="jd-sumtable">
25 <tr>
26 <th colspan="12" style="background-color: #E2E2E2">Methods</th>
27 </tr>
28 <tr class="api" >
29 <td class="jd-typecol">
30 <nobr>
31 <em>string</em>
32 </nobr>
33 </td>
34 <td class="jd-linkcol" width="100%">
35 <nobr>
36 <span class="sympad">
37 <a href="#convertToBytes">convertToBytes</a>
38 </span>
39 (<em>string</em> format)
40 </nobr>
41 <div class="jd-descrdiv">
42 Converts the current image to a particular format and returns it as a
43 <em>string</em> that you can then access as an <em>iterable</em> of binary bytes.
44 </div>
45 </td>
46 </tr>
47 <tr class="api" >
48 <td class="jd-typecol">
49 <nobr>
50 <em>tuple</em>
51 </nobr>
52 </td>
53 <td class="jd-linkcol" width="100%">
54 <nobr>
55 <span class="sympad">
56 <a href="#getRawPixel">getRawPixel</a>
57 </span>
58 (<em>integer</em> x,
59 <em>integer</em> y)
60 </nobr>
61 <div class="jd-descrdiv">
62 Returns the single pixel at the image location (x,y), as an
63 a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
64 </div>
65 </td>
66 </tr>
67 <tr class="api" >
68 <td class="jd-typecol">
69 <nobr>
70 <em>integer</em>
71 </nobr>
72 </td>
73 <td class="jd-linkcol" width="100%">
74 <nobr>
75 <span class="sympad">
76 <a href="#getRawPixelInt">getRawPixelInt</a>
77 </span>
78 (<em>integer</em> x,
79 <em>integer</em> y)
80 </nobr>
81 <div class="jd-descrdiv">
82 Returns the single pixel at the image location (x,y), as
83 a 32-bit <em>integer</em>.
84 </div>
85 </td>
86 </tr>
87 <tr class="api" >
88 <td class="jd-typecol">
89 <nobr>
90 <code>
91 <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
92 </code>
93 </nobr>
94 </td>
95 <td class="jd-linkcol" width="100%">
96 <nobr>
97 <span class="sympad">
98 <a href="#getSubImage">getSubImage</a>
99 </span>
100 (<em>tuple</em> rect)
101 </nobr>
102 <div class="jd-descrdiv">
103 Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
104 current image.
105 </div>
106 </td>
107 </tr>
108 <tr class="api" >
109 <td class="jd-typecol">
110 <nobr>
111 <em>boolean</em>
112 </nobr>
113 </td>
114 <td class="jd-linkcol" width="100%">
115 <nobr>
116 <span class="sympad">
117 <a href="#sameAs">sameAs</a>
118 </span>
119 (<code><a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a></code>
120 other,
121 <em>float</em> percent)
122 </nobr>
123 <div class="jd-descrdiv">
124 Compares this <code>MonkeyImage</code> object to another and returns the result of
125 the comparison. The <code>percent</code> argument specifies the percentage
126 difference that is allowed for the two images to be "equal".
127 </div>
128 </td>
129 </tr>
130 <tr class="api" >
131 <td class="jd-typecol">
132 <nobr>
133 <em>void</em>
134 </nobr>
135 </td>
136 <td class="jd-linkcol" width="100%">
137 <nobr>
138 <span class="sympad">
139 <a href="#writeToFile">writeToFile</a>
140 </span>
141 (<em>string</em> path,
142 <em>string</em> format)
143 </nobr>
144 <div class="jd-descrdiv">
145 Writes the current image to the file specified by <code>filename</code>, in the
146 format specified by <code>format</code>.
147 </div>
148 </td>
149 </tr>
150</table>
151<!-- ========= METHOD DETAIL ======== -->
152<!-- Public methods -->
153<h2>Public Methods</h2>
154<A NAME="convertToBytes"></A>
155<div class="jd-details api ">
156 <h4 class="jd-details-title">
157 <span class="normal">
158 <em>string</em>
159 </span>
160 <span class="sympad">convertToBytes</span>
161 <span class="normal">
162 (
163 <em>string</em> format)
164 </span>
165 </h4>
166 <div class="jd-details-descr">
167
168 <div class="jd-tagdata jd-tagdescr">
169 <p>
170 Converts the current image to a particular format and returns it as a <em>string</em>
171 that you can then access as an <em>iterable</em> of binary bytes.
172 </p>
173 </div>
174 <div class="jd-tagdata">
175 <h5 class="jd-tagtitle">Arguments</h5>
176 <table class="jd-tagtable">
177 <tr>
178 <th>format</th>
179 <td>
180 The desired output format. All of the common raster output formats are supported.
181 The default value is "png" (Portable Network Graphics).
182 </td>
183 </tr>
184 </table>
185 </div>
186</div>
187</div>
188<A NAME="getRawPixel"></A>
189<div class="jd-details api ">
190 <h4 class="jd-details-title">
191 <span class="normal">
192 <em>tuple</em>
193 </span>
194 <span class="sympad">getRawPixel</span>
195 <span class="normal">
196 (<em>integer</em> x,
197 <em>integer</em> y)
198 </span>
199 </h4>
200 <div class="jd-details-descr">
201
202 <div class="jd-tagdata jd-tagdescr">
203 <p>
204 Returns the single pixel at the image location (x,y), as an
205 a <em>tuple</em> of <em>integer</em>, in the form (a,r,g,b).
206 </p>
207 </div>
208 <div class="jd-tagdata">
209 <h5 class="jd-tagtitle">Arguments</h5>
210 <table class="jd-tagtable">
211 <tr>
212 <th>x</th>
213 <td>
214 The horizontal position of the pixel, starting with 0 at the left of the screen in the
215 orientation it had when the screenshot was taken.
216 </td>
217 </tr>
218 <tr>
219 <th>y</th>
220 <td>
221 The vertical position of the pixel, starting with 0 at the top of the screen in the
222 orientation it had when the screenshot was taken.
223 </td>
224 </tr>
225 </table>
226 </div>
227 <div class="jd-tagdata">
228 <h5 class="jd-tagtitle">Returns</h5>
229 <ul class="nolist">
230 <li>
231 A tuple of integers representing the pixel, in the form (a,r,g,b) where
232 a is the alpha channel value, and r, g, and b are the red, green, and blue values,
233 respectively.
234 </li>
235 </ul>
236 </div>
237 </div>
238</div>
239<A NAME="getRawPixelInt"></A>
240<div class="jd-details api ">
241 <h4 class="jd-details-title">
242 <span class="normal">
243 <em>tuple</em>
244 </span>
245 <span class="sympad">getRawPixelInt</span>
246 <span class="normal">
247 (<em>integer</em> x,
248 <em>integer</em> y)
249 </span>
250 </h4>
251 <div class="jd-details-descr">
252
253 <div class="jd-tagdata jd-tagdescr">
254 <p>
255 Returns the single pixel at the image location (x,y), as an
256 an <em>integer</em>. Use this method to economize on memory.
257 </p>
258 </div>
259 <div class="jd-tagdata">
260 <h5 class="jd-tagtitle">Arguments</h5>
261 <table class="jd-tagtable">
262 <tr>
263 <th>x</th>
264 <td>
265 The horizontal position of the pixel, starting with 0 at the left of the screen in the
266 orientation it had when the screenshot was taken.
267 </td>
268 </tr>
269 <tr>
270 <th>y</th>
271 <td>
272 The vertical position of the pixel, starting with 0 at the top of the screen in the
273 orientation it had when the screenshot was taken.
274 </td>
275 </tr>
276 </table>
277 </div>
278 <div class="jd-tagdata">
279 <h5 class="jd-tagtitle">Returns</h5>
280 <ul class="nolist">
281 <li>
282 The a,r,g, and b values of the pixel as 8-bit values combined into a 32-bit
283 integer, with a as the leftmost 8 bits, r the next rightmost, and so forth.
284 </li>
285 </ul>
286 </div>
287 </div>
288</div>
289<A NAME="getSubImage"></A>
290<div class="jd-details api ">
291 <h4 class="jd-details-title">
292 <span class="normal">
293 <code>
294 <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
295 </code>
296 </span>
297 <span class="sympad">getSubImage</span>
298 <span class="normal">
299 (<em>tuple</em> rect)
300 </span>
301 </h4>
302 <div class="jd-details-descr">
303
304 <div class="jd-tagdata jd-tagdescr">
305 <p>
306 Creates a new <code>MonkeyImage</code> object from a rectangular selection of the
307 current image.
308 </p>
309 </div>
310 <div class="jd-tagdata">
311 <h5 class="jd-tagtitle">Arguments</h5>
312 <table class="jd-tagtable">
313 <tr>
314 <th>rect</th>
315 <td>
316 A tuple (x, y, w, h) specifying the selection. x and y specify the 0-based pixel
317 position of the upper left-hand corner of the selection. w specifies the width of the
318 region, and h specifies its height, both in units of pixels.
319 <p>
320 The image's orientation is the same as the screen orientation at the time the
321 screenshot was made.
322 </p>
323 </td>
324 </tr>
325 </table>
326 </div>
327 <div class="jd-tagdata">
328 <h5 class="jd-tagtitle">Returns</h5>
329 <ul class="nolist">
330 <li>
331 A new <code>MonkeyImage</code> object containing the selection.
332 </li>
333 </ul>
334 </div>
335 </div>
336</div>
337<A NAME="sameAs"></A>
338<div class="jd-details api ">
339 <h4 class="jd-details-title">
340 <span class="normal">
341 <em>boolean</em>
342 </span>
343 <span class="sympad">sameAs</span>
344 <span class="normal">
345 (
346 <code>
347 <a href="{@docRoot}guide/developing/tools/MonkeyImage.html">MonkeyImage</a>
348 </code> otherImage,
349 <em>float</em> percent
350 )
351 </span>
352 </h4>
353 <div class="jd-details-descr">
354
355 <div class="jd-tagdata jd-tagdescr">
356 <p>
357 Compares this <code>MonkeyImage</code> object to another and returns the result of
358 the comparison. The <code>percent</code> argument specifies the percentage
359 difference that is allowed for the two images to be "equal".
360 </p>
361 </div>
362 <div class="jd-tagdata">
363 <h5 class="jd-tagtitle">Arguments</h5>
364 <table class="jd-tagtable">
365 <tr>
366 <th>other</th>
367 <td>
368 Another <code>MonkeyImage</code> object to compare to this one.
369 </td>
370 </tr>
371 <tr>
372 <th>
373 percent
374 </th>
375 <td>
376 A float in the range 0.0 to 1.0, inclusive, indicating
377 the percentage of pixels that need to be the same for the method to return
378 <code>true</code>. The default is 1.0, indicating that all the pixels
379 must match.
380 </td>
381 </tr>
382 </table>
383 </div>
384 <div class="jd-tagdata">
385 <h5 class="jd-tagtitle">Returns</h5>
386 <ul class="nolist">
387 <li>
388 Boolean <code>true</code> if the images match, or boolean <code>false</code> otherwise.
389 </li>
390 </ul>
391 </div>
392 </div>
393</div>
394<A NAME="writeToFile"></A>
395<div class="jd-details api ">
396 <h4 class="jd-details-title">
397 <span class="normal">
398 void
399 </span>
400 <span class="sympad">writeToFile</span>
401 <span class="normal">
402 (<em>string</em> filename,
403 <em>string</em> format)
404 </span>
405 </h4>
406 <div class="jd-details-descr">
407
408 <div class="jd-tagdata jd-tagdescr">
409 <p>
410 Writes the current image to the file specified by <code>filename</code>, in the
411 format specified by <code>format</code>.
412 </p>
413 </div>
414 <div class="jd-tagdata">
415 <h5 class="jd-tagtitle">Arguments</h5>
416 <table class="jd-tagtable">
417 <tr>
418 <th>path</th>
419 <td>
420 The fully-qualified filename and extension of the output file.
421 </td>
422 </tr>
423 <tr>
424 <th>
425 format
426 </th>
427 <td>
428 The output format to use for the file. If no format is provided, then the
429 method tries to guess the format from the filename's extension. If no
430 extension is provided and no format is specified, then the default format of
431 "png" (Portable Network Graphics) is used.
432 </td>
433 </tr>
434 </table>
435 </div>
436 </div>
437</div>