rmagick 1.13.0 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (48) hide show
  1. data/ChangeLog +34 -0
  2. data/README.html +12 -29
  3. data/README.txt +10 -26
  4. data/configure +768 -73
  5. data/configure.ac +29 -26
  6. data/doc/comtasks.html +3 -4
  7. data/doc/constants.html +85 -67
  8. data/doc/draw.html +22 -0
  9. data/doc/ex/dissolve.rb +13 -0
  10. data/doc/ex/edge.rb +1 -1
  11. data/doc/ex/mask.rb +37 -0
  12. data/doc/ex/sketch.rb +25 -0
  13. data/doc/ex/watermark.rb +23 -0
  14. data/doc/ilist.html +11 -13
  15. data/doc/image1.html +601 -52
  16. data/doc/image2.html +637 -28
  17. data/doc/image3.html +339 -54
  18. data/doc/imageattrs.html +211 -41
  19. data/doc/imusage.html +41 -2
  20. data/doc/index.html +8 -6
  21. data/doc/info.html +57 -42
  22. data/doc/optequiv.html +1919 -0
  23. data/doc/rvg.html +45 -42
  24. data/doc/scripts/doc.js +14 -1
  25. data/doc/scripts/stripeTables.js +23 -0
  26. data/doc/usage.html +66 -15
  27. data/{doc/ex → examples}/demo.rb +0 -0
  28. data/examples/find_similar_region.rb +34 -0
  29. data/examples/import_export.rb +1 -1
  30. data/examples/pattern_fill.rb +2 -2
  31. data/examples/rotating_text.rb +2 -4
  32. data/examples/thumbnail.rb +1 -1
  33. data/ext/RMagick/MANIFEST +9 -4
  34. data/ext/RMagick/extconf.rb.in +1 -1
  35. data/ext/RMagick/rmagick.h +47 -10
  36. data/ext/RMagick/rmagick_config.h.in +24 -0
  37. data/ext/RMagick/rmdraw.c +32 -7
  38. data/ext/RMagick/rmilist.c +55 -37
  39. data/ext/RMagick/rmimage.c +1588 -447
  40. data/ext/RMagick/rminfo.c +94 -3
  41. data/ext/RMagick/rmmain.c +68 -7
  42. data/ext/RMagick/rmutil.c +67 -9
  43. data/lib/RMagick.rb +190 -53
  44. data/lib/rvg/stretchable.rb +17 -13
  45. data/rmagick.gemspec +1 -1
  46. metadata +11 -6
  47. data/doc/ex/level_channel.rb +0 -33
  48. data/doc/ex/opaque.rb +0 -14
@@ -93,6 +93,8 @@
93
93
 
94
94
  <li><a href="#reduce_noise">reduce_noise</a></li>
95
95
 
96
+ <li><a href="#resample">resample</a></li>
97
+
96
98
  <li><a href="#resize">resize</a></li>
97
99
 
98
100
  <li><a href="#resize_bang">resize!</a></li>
@@ -145,6 +147,8 @@
145
147
 
146
148
  <li><a href="#signature">signature</a></li>
147
149
 
150
+ <li><a href="#sketch">sketch</a></li>
151
+
148
152
  <li><a href="#solarize">solarize</a></li>
149
153
 
150
154
  <li><a href="#splice">splice</a></li>
@@ -197,6 +201,8 @@
197
201
 
198
202
  <li><a href="#trim_bang">trim!</a></li>
199
203
 
204
+ <li><a href="#unique_colors">unique_colors</a></li>
205
+
200
206
  <li><a href="#unsharp_mask">unsharp_mask</a></li>
201
207
 
202
208
  <li><a href=
@@ -206,6 +212,8 @@
206
212
 
207
213
  <li><a href="#vignette">vignette</a></li>
208
214
 
215
+ <li><a href="#watermark">watermark</a></li>
216
+
209
217
  <li><a href="#wave">wave</a></li>
210
218
 
211
219
  <li><a href="#white_threshold">white_threshold</a></li>
@@ -360,48 +368,26 @@
360
368
 
361
369
  <p>self</p>
362
370
 
371
+ <h4>See also</h4>
372
+
373
+ <p><a href="image1.html#add_profile">add_profile</a> and
374
+ <a href="image1.html#delete_profile">delete_profile</a> perform
375
+ very similar functions. However, <code>add_profile</code>
376
+ accepts the name of a profile file on disk instead of the
377
+ profile data itself and, if the file contains more than one
378
+ profile, will load all the profiles at once.</p>
379
+
363
380
  <h4>Magick API</h4>
364
381
 
365
382
  <p>ProfileImage</p>
366
383
 
367
384
  <h4>Notes</h4>
368
385
 
369
- <ol>
370
- <li>To extract a profile from an image, simply convert the
371
- image, specifying the profile name (APP1, 8BIM, ICM, IPTC,
372
- etc.) as the format of the output image. There are at least
373
- two ways to do this.
374
-
375
- <ol style="list-style-type: lower-alpha">
376
- <li>Write the image to a file using the profile name as
377
- the filename extension ("myimage.app1", for example).
378
- <pre>
379
- img.write("myimage.app1")
380
- </pre>
381
- </li>
382
-
383
- <li>To capture the profile information in a string,
384
- assign the profile name to the <a href=
385
- "imageattrs.html#format">format=</a> attribute and call
386
- <a href="image3.html#to_blob">to_blob.</a>
387
- <pre>
388
- img.format = 'iptc'
389
- profile_str = img.to_blob
390
- </pre><a href=
391
- "http://www.imagemagick.org/script/formats.php#embedded">
392
- This page (ImageMagick)</a> and <a href=
393
- "http://www.graphicsmagick.org/www/formats.html">this
394
- page (GraphicsMagick)</a> list the supported profiles.
395
- </li>
396
- </ol>
397
- </li>
398
-
399
- <li>&times;Magick does not automatically remove profiles when
400
- resizing images. If you are trying to make your JPEG
401
- thumbnail images as small as possible, use
402
- <code>profile!</code> to remove any profiles from the image
403
- as well. Also see <a href="#strip_bang">strip!</a></li>
404
- </ol>
386
+ <p>&times;Magick does not automatically remove profiles when
387
+ resizing images. If you are trying to make your JPEG thumbnail
388
+ images as small as possible, use <code>profile!</code> to
389
+ remove any profiles from the image as well. Also see <a href=
390
+ "#strip_bang">strip!</a></p>
405
391
  </div>
406
392
 
407
393
  <div class="sig">
@@ -562,6 +548,10 @@ profile_str = img.to_blob
562
548
 
563
549
  <li><code>LShiftQuantumOperator</code></li>
564
550
 
551
+ <li><code>MaxQuantumOperator<sup>*</sup></code></li>
552
+
553
+ <li><code>MinQuantumOperator<sup>*</sup></code></li>
554
+
565
555
  <li><code>MultiplyQuantumOperator</code></li>
566
556
 
567
557
  <li><code>OrQuantumOperator</code></li>
@@ -571,7 +561,7 @@ profile_str = img.to_blob
571
561
  <li><code>SubtractQuantumOperator</code></li>
572
562
 
573
563
  <li><code>XorQuantumOperator</code></li>
574
- </ul>
564
+ </ul><sup>*</sup> Available in ImageMagick 6.2.0 and later.
575
565
  </dd>
576
566
 
577
567
  <dt>rvalue</dt>
@@ -866,11 +856,57 @@ random_threshold_channel(geom, RedChannel)
866
856
  <p>ReduceNoiseImage</p>
867
857
  </div>
868
858
 
859
+ <div class="sig">
860
+ <h3 id="resample">resample</h3>
861
+
862
+ <p><span class="arg">image</span>.resample(<span class=
863
+ "arg">horizontal_res</span>=72.0[, <span class=
864
+ "arg">vertical_res</span>]) -&gt; <em>anImage</em></p>
865
+ </div>
866
+
867
+ <div class="desc">
868
+ <h4>Description</h4>
869
+
870
+ <p class="imquote">Resample image to specified horizontal and
871
+ vertical resolution.</p>
872
+
873
+ <p><span class="imquote">Resize the image so that its rendered
874
+ size remains the same as the original at the specified target
875
+ resolution. For example, if a 300 DPI image renders at 3 inches
876
+ by 2 inches on a 300 DPI device, when the image has been
877
+ resampled to 72 DPI, it will render at 3 inches by 2 inches on
878
+ a 72 DPI device. Note that only a small number of image formats
879
+ (e.g. JPEG, PNG, and TIFF) are capable of storing the image
880
+ resolution. For formats which do not support an image
881
+ resolution, the original resolution of the image must be
882
+ specified via</span> the <a href=
883
+ "imageattrs.html#density">density</a> attribute <span class=
884
+ "imquote">prior to specifying the resample
885
+ resolution.</span></p>
886
+
887
+ <h4>Arguments</h4>
888
+
889
+ <dl>
890
+ <dt>horizontal_res</dt>
891
+
892
+ <dd>the target horizontal resolution. The default is
893
+ 72.0.</dd>
894
+
895
+ <dt>vertical_res</dt>
896
+
897
+ <dd>the target vertical resolution. The default is
898
+ <span class="arg">horizontal_res</span>.</dd>
899
+ </dl>
900
+ </div>
901
+
869
902
  <div class="sig">
870
903
  <h3 id="resize">resize</h3>
871
904
 
872
905
  <p><span class="arg">image</span>.resize(<span class=
873
906
  "arg">new_width</span>, <span class="arg">new_height</span>,
907
+ <em>filter</em>=<a href=
908
+ "constants.html#FilterType">LanczosFilter</a>,
909
+ <em>support</em>=1.0) -&gt; <em>image</em><br />
874
910
  <span class="arg">image</span>.resize(<span class=
875
911
  "arg">scale_factor</span>) -&gt; <em>anImage</em></p>
876
912
  </div>
@@ -909,13 +945,12 @@ random_threshold_channel(geom, RedChannel)
909
945
  IIR (infinite impulse response). Bessel and Sinc are windowed
910
946
  (brought down to zero) with the Blackman filter.</span></dd>
911
947
 
912
- <dt>blur</dt>
948
+ <dt>support</dt>
913
949
 
914
- <dd>The blur factor. Values &gt; 1 increase the blurriness.
915
- Values &lt; 1 increase the sharpness. If this argument is not
916
- specified, <code>resize</code> uses the value of the
917
- receiver's <a href="imageattrs.html#Image.blur">blur</a>
918
- attribute.</dd>
950
+ <dd>Values &gt; 1 increase the blurriness. Values &lt; 1
951
+ increase the sharpness. If this argument is not specified,
952
+ <code>resize</code> uses the value of the receiver's <a href=
953
+ "imageattrs.html#Image.blur">blur</a> attribute.</dd>
919
954
 
920
955
  <dt>scale_factor</dt>
921
956
 
@@ -950,7 +985,7 @@ random_threshold_channel(geom, RedChannel)
950
985
  <p><em>image</em>.resize!(<em>new_width</em>,
951
986
  <em>new_height</em>, <em>filter</em>=<a href=
952
987
  "constants.html#FilterType">LanczosFilter</a>,
953
- <em>blur</em>=1.0) -&gt; <em>image</em><br />
988
+ <em>support</em>=1.0) -&gt; <em>image</em><br />
954
989
  <span class="arg">image</span>.resize!(<span class=
955
990
  "arg">scale_factor</span>) -&gt; <em>image</em></p>
956
991
  </div>
@@ -1069,7 +1104,8 @@ random_threshold_channel(geom, RedChannel)
1069
1104
  <h3 id="rotate">rotate</h3>
1070
1105
 
1071
1106
  <p><span class="arg">image</span>.rotate(<span class=
1072
- "arg">amount</span>) -&gt; <em>anImage</em></p>
1107
+ "arg">amount</span> [, <span class="arg">qualifier</span>])
1108
+ -&gt; <em>anImage</em></p>
1073
1109
  </div>
1074
1110
 
1075
1111
  <div class="desc">
@@ -1080,16 +1116,31 @@ random_threshold_channel(geom, RedChannel)
1080
1116
  counter-clockwise. <span class="imquote">Rotated images are
1081
1117
  usually larger than the originals and have "empty" triangular
1082
1118
  corners. Empty triangles left over from shearing the image are
1083
- filled with the color defined by the pixel at location
1084
- (0,0).</span></p>
1119
+ filled with the <a href=
1120
+ "imageattrs.html#background_color">background
1121
+ color</a>.</span></p>
1085
1122
 
1086
1123
  <h4>Arguments</h4>
1087
1124
 
1088
- <p>The number of degrees to rotate the image.</p>
1125
+ <dl>
1126
+ <dt>amount</dt>
1127
+
1128
+ <dd>The number of degrees to rotate the image.</dd>
1129
+
1130
+ <dt>qualifier</dt>
1131
+
1132
+ <dd>If present, either "&gt;" or "&lt;". If "&gt;", rotates
1133
+ the image only if the image's width exceeds its height. If
1134
+ "&lt;" rotates the image only if its height exceeds its
1135
+ width. If this argument is omitted the image is always
1136
+ rotated.</dd>
1137
+ </dl>
1089
1138
 
1090
1139
  <h4>Returns</h4>
1091
1140
 
1092
- <p>A new image</p>
1141
+ <p>A new image, or <code>nil</code> if the image was not
1142
+ rotated because it did not meet the qualification specified by
1143
+ the second argument.</p>
1093
1144
 
1094
1145
  <h4>Example</h4>
1095
1146
 
@@ -1125,7 +1176,8 @@ random_threshold_channel(geom, RedChannel)
1125
1176
  <h3 id="rotate_bang">rotate!</h3>
1126
1177
 
1127
1178
  <p><span class="arg">image</span>.rotate!(<span class=
1128
- "arg">amount</span>) -&gt; <em>image</em></p>
1179
+ "arg">amount</span> [, <span class="arg">qualifier</span>])
1180
+ -&gt; <em>image</em></p>
1129
1181
  </div>
1130
1182
 
1131
1183
  <div class="desc">
@@ -1135,7 +1187,9 @@ random_threshold_channel(geom, RedChannel)
1135
1187
 
1136
1188
  <h4>Returns</h4>
1137
1189
 
1138
- <p>self</p>
1190
+ <p>self, or <code>nil</code> if the image was not rotated
1191
+ because it did not meet the qualification specified by the
1192
+ second argument.</p>
1139
1193
  </div>
1140
1194
 
1141
1195
  <div class="sig">
@@ -1468,7 +1522,9 @@ random_threshold_channel(geom, RedChannel)
1468
1522
 
1469
1523
  <dt>azimuth, elevation</dt>
1470
1524
 
1471
- <dd>The light source direction.</dd>
1525
+ <dd>The light source direction. The azimuth is measured in
1526
+ degrees. 0&deg; is at 9 o'clock. Increasing values move the
1527
+ light source counter-clockwise.</dd>
1472
1528
  </dl>
1473
1529
 
1474
1530
  <h4>Returns</h4>
@@ -1554,7 +1610,7 @@ random_threshold_channel(geom, RedChannel)
1554
1610
  id="shadowed" onmouseover=
1555
1611
  "this.style.display='none';shadowless.style.display='';" src=
1556
1612
  "ex/shadow_after.gif" alt="shadow example"
1557
- /></a> <img src="ex/images/spin.gif" alt="" style=
1613
+ /></a> <img src="ex/images/spin.gif" alt="" style=
1558
1614
  "margin-bottom: 120px" title=
1559
1615
  "Mouse over the example to see the original image" /></p>
1560
1616
 
@@ -1772,7 +1828,7 @@ random_threshold_channel(geom, RedChannel)
1772
1828
  <img id="sheared" onmouseover=
1773
1829
  "this.style.display='none'; noshear.style.display='';" src=
1774
1830
  "ex/shear.jpg" alt="shear example"
1775
- /></a><img src="ex/images/spin.gif" alt="" class=
1831
+ /></a><img src="ex/images/spin.gif" alt="" class=
1776
1832
  "spin" style="left: 253px; top: 34px" title=
1777
1833
  "Mouse over the example to see the original image" /></p>
1778
1834
 
@@ -1894,6 +1950,51 @@ img.properties &raquo;
1894
1950
  <p>SignatureImage</p>
1895
1951
  </div>
1896
1952
 
1953
+ <div class="sig">
1954
+ <h3 id="sketch">sketch</h3>
1955
+
1956
+ <p><span class="arg">image</span>.sketch(<span class=
1957
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=1.0,
1958
+ <span class="arg">angle</span>=0.0) -&gt; <em>anImage</em></p>
1959
+ </div>
1960
+
1961
+ <div class="desc">
1962
+ <h4>Description</h4>
1963
+
1964
+ <p>Simulates a pencil sketch. For best results start with a
1965
+ grayscale image.</p>
1966
+
1967
+ <h4>Arguments</h4>
1968
+
1969
+ <dl>
1970
+ <dt>radius, sigma</dt>
1971
+
1972
+ <dd>The radius and sigma of the Gaussian operator</dd>
1973
+
1974
+ <dt>angle</dt>
1975
+
1976
+ <dd>The angle toward which the image is sketched.</dd>
1977
+ </dl>
1978
+
1979
+ <h4>Returns</h4>
1980
+
1981
+ <p>A new image</p>
1982
+
1983
+ <h4>Example</h4>
1984
+
1985
+ <p class="rollover"><a href=
1986
+ "javascript:popup('sketch.rb.html')"><img src="ex/sketch.jpg"
1987
+ title="Click to see the example script" alt="sketch example"
1988
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1989
+ "this.src='ex/sketch.jpg'" /></a> <img src="ex/images/spin.gif"
1990
+ alt="" class="spin" title=
1991
+ "Mouse over the example to see the original image" /></p>
1992
+
1993
+ <h4>Magick API</h4>
1994
+
1995
+ <p>SketchImage (available in ImageMagick 6.2.8)</p>
1996
+ </div>
1997
+
1897
1998
  <div class="sig">
1898
1999
  <h3 id="solarize">solarize</h3>
1899
2000
 
@@ -2168,6 +2269,10 @@ p stats.red.stddev &raquo; 0.231399683489667
2168
2269
  <h4>Magick API</h4>
2169
2270
 
2170
2271
  <p>SteganoImage</p>
2272
+
2273
+ <h4>See also</h4>
2274
+
2275
+ <p><a href="#watermark">watermark</a></p>
2171
2276
  </div>
2172
2277
 
2173
2278
  <div class="sig">
@@ -2899,6 +3004,29 @@ img.to_color(pixel)
2899
3004
  <p>self</p>
2900
3005
  </div>
2901
3006
 
3007
+ <div class="sig">
3008
+ <h3 id="unique_colors">unique_colors</h3>
3009
+
3010
+ <p><span class="arg">image</span>.unique_colors -&gt;
3011
+ <em>anImage</em></p>
3012
+ </div>
3013
+
3014
+ <div class="desc">
3015
+ <h4>Description</h4>
3016
+
3017
+ <p>Constructs a new image with one pixel for each unique color
3018
+ in the image. The new image has 1 row. The row has 1 column for
3019
+ each unique pixel in the image.</p>
3020
+
3021
+ <h4>Returns</h4>
3022
+
3023
+ <p>A new image</p>
3024
+
3025
+ <h4>Magick API</h4>
3026
+
3027
+ <p>UniqueImageColors (available in ImageMagick 6.2.9)</p>
3028
+ </div>
3029
+
2902
3030
  <div class="sig">
2903
3031
  <h3 id="unsharp_mask">unsharp_mask</h3>
2904
3032
 
@@ -3231,6 +3359,163 @@ end
3231
3359
  size, shape, and background color of the vignette.</p>
3232
3360
  </div>
3233
3361
 
3362
+ <div class="sig">
3363
+ <h3 id="watermark">watermark</h3>
3364
+
3365
+ <p><span class="arg">image</span>.watermark(<span class=
3366
+ "arg">mark</span>, <span class="arg">lightness</span>=1.0,
3367
+ <span class="arg">saturation</span>=1.0, <span class=
3368
+ "arg">x_offset</span>=0, <span class="arg">y_offset</span>=0)
3369
+ -&gt; <em>anImage</em><br />
3370
+ <span class="arg">image</span>.watermark(<span class=
3371
+ "arg">mark</span>, <span class="arg">lightness</span>=1.0,
3372
+ <span class="arg">saturation</span>=1.0, <span class=
3373
+ "arg">gravity</span>, <span class="arg">x_offset</span>=0,
3374
+ <span class="arg">y_offset</span>=0) -&gt; <em>anImage</em></p>
3375
+ </div>
3376
+
3377
+ <div class="desc">
3378
+ <h4>Description</h4>
3379
+
3380
+ <p>Composites a watermark image on the target image using the
3381
+ <a href="constants.html#CompositeOperator">Modulate</a>
3382
+ composite operator. This composite operation operates in the
3383
+ HSL colorspace and combines part of the lightness, part of the
3384
+ saturation, and all of the hue of each pixel in the watermark
3385
+ with the corresponding pixel in the target image</p>
3386
+
3387
+ <h4>Arguments</h4>
3388
+
3389
+ <dl>
3390
+ <dt>mark</dt>
3391
+
3392
+ <dd>The watermark image. Either an imagelist or an image. If
3393
+ an imagelist, uses the current image.</dd>
3394
+
3395
+ <dt>lightness</dt>
3396
+
3397
+ <dd>The fraction of the lightness component of the watermark
3398
+ pixels to be composited onto the target image. Must be a
3399
+ non-negative number or a string in the form "NN%". If
3400
+ lightness is a number it is interpreted as a percentage. Both
3401
+ 0.25 and "25%" mean 25%. The default is 100%.</dd>
3402
+
3403
+ <dt>saturation</dt>
3404
+
3405
+ <dd>The fraction of the saturation component of the watermark
3406
+ pixels to be composited onto the target image. Must be a
3407
+ non-negative number or a string in the form "NN%". If
3408
+ lightness is a number it is interpreted as a percentage. Both
3409
+ 0.25 and "25%" mean 25%. The default is 100%.</dd>
3410
+
3411
+ <dt>x_offset</dt>
3412
+
3413
+ <dd>The offset of the watermark, measured from the left-hand
3414
+ side of the target image. The default is 0.</dd>
3415
+
3416
+ <dt>y_offset</dt>
3417
+
3418
+ <dd>The offset of the watermark, measured from the top of the
3419
+ target image. The default is 0.</dd>
3420
+ </dl>
3421
+
3422
+ <p>Watermark can be called with a <span class=
3423
+ "arg">gravity</span> argument or without. When a <span class=
3424
+ "arg">gravity</span> argument is specified but the <span class=
3425
+ "arg">x-</span> and <span class="arg">y-offsets</span> are
3426
+ omitted, the watermark is positioned based on the value of the
3427
+ <span class="arg">gravity</span> argument:</p>
3428
+
3429
+ <dl>
3430
+ <dt>NorthWestGravity</dt>
3431
+
3432
+ <dd>The watermark abuts the top and left sides of the
3433
+ image.</dd>
3434
+
3435
+ <dt>NorthGravity</dt>
3436
+
3437
+ <dd>The watermark is centered left-to-right and abuts the top
3438
+ of the image.</dd>
3439
+
3440
+ <dt>NorthEastGravity</dt>
3441
+
3442
+ <dd>The watermark abuts the top and right sides of the
3443
+ image.</dd>
3444
+
3445
+ <dt>EastGravity</dt>
3446
+
3447
+ <dd>The watermark is centered top-to-bottom and abuts the
3448
+ right side of the image.</dd>
3449
+
3450
+ <dt>SouthEastGravity</dt>
3451
+
3452
+ <dd>The watermark abuts the bottom and right sides of the
3453
+ image.</dd>
3454
+
3455
+ <dt>SouthGravity</dt>
3456
+
3457
+ <dd>The watermark is centered left-to-right and abuts the
3458
+ bottom of the image.</dd>
3459
+
3460
+ <dt>SouthWestGravity</dt>
3461
+
3462
+ <dd>The watermark abuts the bottom and left sides of the
3463
+ image.</dd>
3464
+
3465
+ <dt>WestGravity</dt>
3466
+
3467
+ <dd>The watermark is centered top-to-bottom and abuts the
3468
+ left side of the image.</dd>
3469
+
3470
+ <dt>CenterGravity</dt>
3471
+
3472
+ <dd>The watermark is centered left-to-right and
3473
+ top-to-bottom.</dd>
3474
+ </dl>
3475
+
3476
+ <p>When the <span class="arg">gravity</span> argument is
3477
+ present and the <span class="arg">x-offset</span> (and
3478
+ optionally the <span class="arg">y-offset</span>) is present,
3479
+ the <span class="arg">x-</span> and <span class=
3480
+ "arg">y-offset</span> are measured from the right and/or bottom
3481
+ edges of the target image based on the value of <span class=
3482
+ "arg">gravity</span>. If the argument is NorthEastGravity,
3483
+ EastGravity, or SouthEastGravity, the <span class=
3484
+ "arg">x-offset</span> is measured from the right side of the
3485
+ image. If the argument is SouthEastGravity, SouthGravity, or
3486
+ SouthWestGravity, the <span class="arg">y-offset</span> is
3487
+ measured from the bottom of the image. All other values are
3488
+ ignored and the <span class="arg">x-</span> and <span class=
3489
+ "arg">y-offset</span> are measured from the upper-left corner
3490
+ of the image.</p>
3491
+
3492
+ <h4>Returns</h4>
3493
+
3494
+ <p>A new image</p>
3495
+
3496
+ <h4>Example</h4>
3497
+
3498
+ <p>See <a href=
3499
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/annotating/#wmark_image">
3500
+ "Watermarking with Images"</a> in Anthony Thyssen's <a href=
3501
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/"><cite>Examples
3502
+ of ImageMagick Usage</cite></a>.</p>
3503
+
3504
+ <p class="rollover"><a href=
3505
+ "javascript:popup('watermark.rb.html')"><img src=
3506
+ "ex/watermark.jpg" alt="watermark example" title=
3507
+ "Click to see the example script" onmouseover=
3508
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
3509
+ "this.src='ex/watermark.jpg'" /></a> <img src=
3510
+ "ex/images/spin.gif" alt="" class="spin" title=
3511
+ "Mouse over the example to see the original image" /></p>
3512
+
3513
+ <h4>See also</h4>
3514
+
3515
+ <p><a href="image1.html#composite">composite</a>, <a href=
3516
+ "#stegano">stegano</a></p>
3517
+ </div>
3518
+
3234
3519
  <div class="sig">
3235
3520
  <h3 id="wave">wave</h3>
3236
3521