rdp-rmagick 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. data/ChangeLog +769 -0
  2. data/Doxyfile +1514 -0
  3. data/README-Mac-OSX.txt +1 -0
  4. data/README.md +231 -0
  5. data/build_tarball.rake +215 -0
  6. data/doc/comtasks.html +287 -0
  7. data/doc/constants.html +1581 -0
  8. data/doc/css/doc.css +299 -0
  9. data/doc/css/popup.css +34 -0
  10. data/doc/css/ref.css +67 -0
  11. data/doc/draw.html +3269 -0
  12. data/doc/ex/InitialCoords.rb +23 -0
  13. data/doc/ex/NewCoordSys.rb +32 -0
  14. data/doc/ex/OrigCoordSys.rb +18 -0
  15. data/doc/ex/PreserveAspectRatio.rb +205 -0
  16. data/doc/ex/RotateScale.rb +37 -0
  17. data/doc/ex/Skew.rb +38 -0
  18. data/doc/ex/Use01.rb +16 -0
  19. data/doc/ex/Use02.rb +21 -0
  20. data/doc/ex/Use03.rb +16 -0
  21. data/doc/ex/ViewBox.rb +33 -0
  22. data/doc/ex/adaptive_threshold.rb +10 -0
  23. data/doc/ex/add_noise.rb +17 -0
  24. data/doc/ex/affine.rb +48 -0
  25. data/doc/ex/affine_transform.rb +20 -0
  26. data/doc/ex/arc.rb +49 -0
  27. data/doc/ex/arcpath.rb +33 -0
  28. data/doc/ex/arcs01.rb +28 -0
  29. data/doc/ex/arcs02.rb +61 -0
  30. data/doc/ex/average.rb +15 -0
  31. data/doc/ex/axes.rb +64 -0
  32. data/doc/ex/baseline_shift01.rb +18 -0
  33. data/doc/ex/bilevel_channel.rb +9 -0
  34. data/doc/ex/blur_image.rb +12 -0
  35. data/doc/ex/border.rb +10 -0
  36. data/doc/ex/bounding_box.rb +44 -0
  37. data/doc/ex/cbezier1.rb +42 -0
  38. data/doc/ex/cbezier2.rb +42 -0
  39. data/doc/ex/cbezier3.rb +42 -0
  40. data/doc/ex/cbezier4.rb +43 -0
  41. data/doc/ex/cbezier5.rb +43 -0
  42. data/doc/ex/cbezier6.rb +53 -0
  43. data/doc/ex/channel.rb +26 -0
  44. data/doc/ex/charcoal.rb +12 -0
  45. data/doc/ex/chop.rb +29 -0
  46. data/doc/ex/circle.rb +33 -0
  47. data/doc/ex/circle01.rb +17 -0
  48. data/doc/ex/clip_path.rb +60 -0
  49. data/doc/ex/coalesce.rb +60 -0
  50. data/doc/ex/color_fill_to_border.rb +29 -0
  51. data/doc/ex/color_floodfill.rb +28 -0
  52. data/doc/ex/color_histogram.rb +48 -0
  53. data/doc/ex/color_reset.rb +11 -0
  54. data/doc/ex/colorize.rb +16 -0
  55. data/doc/ex/colors.rb +64 -0
  56. data/doc/ex/compose_mask.rb +23 -0
  57. data/doc/ex/composite.rb +135 -0
  58. data/doc/ex/composite_layers.rb +53 -0
  59. data/doc/ex/composite_tiled.rb +23 -0
  60. data/doc/ex/contrast.rb +36 -0
  61. data/doc/ex/crop.rb +31 -0
  62. data/doc/ex/crop_with_gravity.rb +46 -0
  63. data/doc/ex/cubic01.rb +45 -0
  64. data/doc/ex/cubic02.rb +94 -0
  65. data/doc/ex/cycle_colormap.rb +21 -0
  66. data/doc/ex/dissolve.rb +13 -0
  67. data/doc/ex/drawcomp.rb +42 -0
  68. data/doc/ex/drop_shadow.rb +60 -0
  69. data/doc/ex/edge.rb +11 -0
  70. data/doc/ex/ellipse.rb +45 -0
  71. data/doc/ex/ellipse01.rb +22 -0
  72. data/doc/ex/emboss.rb +11 -0
  73. data/doc/ex/enhance.rb +28 -0
  74. data/doc/ex/equalize.rb +11 -0
  75. data/doc/ex/evenodd.rb +43 -0
  76. data/doc/ex/fill_pattern.rb +26 -0
  77. data/doc/ex/flatten_images.rb +36 -0
  78. data/doc/ex/flip.rb +11 -0
  79. data/doc/ex/flop.rb +11 -0
  80. data/doc/ex/font_styles.rb +34 -0
  81. data/doc/ex/fonts.rb +20 -0
  82. data/doc/ex/frame.rb +12 -0
  83. data/doc/ex/gaussian_blur.rb +11 -0
  84. data/doc/ex/get_multiline_type_metrics.rb +42 -0
  85. data/doc/ex/get_pixels.rb +48 -0
  86. data/doc/ex/get_type_metrics.rb +146 -0
  87. data/doc/ex/gradientfill.rb +27 -0
  88. data/doc/ex/grav.rb +46 -0
  89. data/doc/ex/gravity.rb +79 -0
  90. data/doc/ex/group.rb +26 -0
  91. data/doc/ex/hatchfill.rb +27 -0
  92. data/doc/ex/image.rb +46 -0
  93. data/doc/ex/images/Apple.miff +0 -0
  94. data/doc/ex/images/Ballerina.jpg +0 -0
  95. data/doc/ex/images/Ballerina3.jpg +0 -0
  96. data/doc/ex/images/Button_0.gif +0 -0
  97. data/doc/ex/images/Button_1.gif +0 -0
  98. data/doc/ex/images/Button_2.gif +0 -0
  99. data/doc/ex/images/Button_3.gif +0 -0
  100. data/doc/ex/images/Button_4.gif +0 -0
  101. data/doc/ex/images/Button_5.gif +0 -0
  102. data/doc/ex/images/Button_6.gif +0 -0
  103. data/doc/ex/images/Button_7.gif +0 -0
  104. data/doc/ex/images/Button_8.gif +0 -0
  105. data/doc/ex/images/Button_9.gif +0 -0
  106. data/doc/ex/images/Button_A.gif +0 -0
  107. data/doc/ex/images/Button_B.gif +0 -0
  108. data/doc/ex/images/Button_C.gif +0 -0
  109. data/doc/ex/images/Button_D.gif +0 -0
  110. data/doc/ex/images/Button_E.gif +0 -0
  111. data/doc/ex/images/Button_F.gif +0 -0
  112. data/doc/ex/images/Button_G.gif +0 -0
  113. data/doc/ex/images/Button_H.gif +0 -0
  114. data/doc/ex/images/Button_I.gif +0 -0
  115. data/doc/ex/images/Button_J.gif +0 -0
  116. data/doc/ex/images/Button_K.gif +0 -0
  117. data/doc/ex/images/Button_L.gif +0 -0
  118. data/doc/ex/images/Button_M.gif +0 -0
  119. data/doc/ex/images/Button_N.gif +0 -0
  120. data/doc/ex/images/Button_O.gif +0 -0
  121. data/doc/ex/images/Button_P.gif +0 -0
  122. data/doc/ex/images/Button_Q.gif +0 -0
  123. data/doc/ex/images/Button_R.gif +0 -0
  124. data/doc/ex/images/Button_S.gif +0 -0
  125. data/doc/ex/images/Button_T.gif +0 -0
  126. data/doc/ex/images/Button_U.gif +0 -0
  127. data/doc/ex/images/Button_V.gif +0 -0
  128. data/doc/ex/images/Button_W.gif +0 -0
  129. data/doc/ex/images/Button_X.gif +0 -0
  130. data/doc/ex/images/Button_Y.gif +0 -0
  131. data/doc/ex/images/Button_Z.gif +0 -0
  132. data/doc/ex/images/Cheetah.jpg +0 -0
  133. data/doc/ex/images/Coffee.wmf +0 -0
  134. data/doc/ex/images/Flower_Hat.jpg +0 -0
  135. data/doc/ex/images/Gold_Statue.jpg +0 -0
  136. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  137. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  138. data/doc/ex/images/Leaf.miff +0 -0
  139. data/doc/ex/images/No.wmf +0 -0
  140. data/doc/ex/images/Polynesia.jpg +0 -0
  141. data/doc/ex/images/Red_Rocks.jpg +0 -0
  142. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  143. data/doc/ex/images/Shorts.jpg +0 -0
  144. data/doc/ex/images/Snake.wmf +0 -0
  145. data/doc/ex/images/Violin.jpg +0 -0
  146. data/doc/ex/images/Yellow_Rose.miff +0 -0
  147. data/doc/ex/images/big-duck.gif +0 -0
  148. data/doc/ex/images/duck.gif +0 -0
  149. data/doc/ex/images/duck0.gif +0 -0
  150. data/doc/ex/images/duck1.gif +0 -0
  151. data/doc/ex/images/duck10.gif +0 -0
  152. data/doc/ex/images/duck11.gif +0 -0
  153. data/doc/ex/images/duck12.gif +0 -0
  154. data/doc/ex/images/duck13.gif +0 -0
  155. data/doc/ex/images/duck14.gif +0 -0
  156. data/doc/ex/images/duck15.gif +0 -0
  157. data/doc/ex/images/duck2.gif +0 -0
  158. data/doc/ex/images/duck3.gif +0 -0
  159. data/doc/ex/images/duck4.gif +0 -0
  160. data/doc/ex/images/duck5.gif +0 -0
  161. data/doc/ex/images/duck6.gif +0 -0
  162. data/doc/ex/images/duck7.gif +0 -0
  163. data/doc/ex/images/duck8.gif +0 -0
  164. data/doc/ex/images/duck9.gif +0 -0
  165. data/doc/ex/images/graydient230x6.gif +0 -0
  166. data/doc/ex/images/logo400x83.gif +0 -0
  167. data/doc/ex/images/model.miff +0 -0
  168. data/doc/ex/images/notimplemented.gif +0 -0
  169. data/doc/ex/images/smile.miff +0 -0
  170. data/doc/ex/images/spin.gif +0 -0
  171. data/doc/ex/implode.rb +34 -0
  172. data/doc/ex/level.rb +11 -0
  173. data/doc/ex/level_colors.rb +11 -0
  174. data/doc/ex/line.rb +42 -0
  175. data/doc/ex/line01.rb +23 -0
  176. data/doc/ex/mask.rb +36 -0
  177. data/doc/ex/matte_fill_to_border.rb +40 -0
  178. data/doc/ex/matte_floodfill.rb +33 -0
  179. data/doc/ex/matte_replace.rb +40 -0
  180. data/doc/ex/median_filter.rb +28 -0
  181. data/doc/ex/modulate.rb +11 -0
  182. data/doc/ex/mono.rb +23 -0
  183. data/doc/ex/morph.rb +26 -0
  184. data/doc/ex/mosaic.rb +35 -0
  185. data/doc/ex/motion_blur.rb +11 -0
  186. data/doc/ex/negate.rb +11 -0
  187. data/doc/ex/negate_channel.rb +9 -0
  188. data/doc/ex/nested_rvg.rb +21 -0
  189. data/doc/ex/nonzero.rb +43 -0
  190. data/doc/ex/normalize.rb +11 -0
  191. data/doc/ex/oil_paint.rb +11 -0
  192. data/doc/ex/opacity.rb +37 -0
  193. data/doc/ex/ordered_dither.rb +11 -0
  194. data/doc/ex/path.rb +64 -0
  195. data/doc/ex/pattern1.rb +25 -0
  196. data/doc/ex/pattern2.rb +26 -0
  197. data/doc/ex/polaroid.rb +28 -0
  198. data/doc/ex/polygon.rb +24 -0
  199. data/doc/ex/polygon01.rb +23 -0
  200. data/doc/ex/polyline.rb +23 -0
  201. data/doc/ex/polyline01.rb +23 -0
  202. data/doc/ex/posterize.rb +8 -0
  203. data/doc/ex/preview.rb +9 -0
  204. data/doc/ex/qbezierpath.rb +52 -0
  205. data/doc/ex/quad01.rb +36 -0
  206. data/doc/ex/quantize-m.rb +25 -0
  207. data/doc/ex/radial_blur.rb +9 -0
  208. data/doc/ex/raise.rb +8 -0
  209. data/doc/ex/random_threshold_channel.rb +13 -0
  210. data/doc/ex/rect01.rb +15 -0
  211. data/doc/ex/rect02.rb +22 -0
  212. data/doc/ex/rectangle.rb +35 -0
  213. data/doc/ex/reduce_noise.rb +28 -0
  214. data/doc/ex/remap.rb +12 -0
  215. data/doc/ex/remap_images.rb +21 -0
  216. data/doc/ex/resize_to_fill.rb +10 -0
  217. data/doc/ex/resize_to_fit.rb +10 -0
  218. data/doc/ex/roll.rb +9 -0
  219. data/doc/ex/rotate.rb +45 -0
  220. data/doc/ex/rotate_f.rb +14 -0
  221. data/doc/ex/roundrect.rb +34 -0
  222. data/doc/ex/rubyname.rb +30 -0
  223. data/doc/ex/rvg_clippath.rb +14 -0
  224. data/doc/ex/rvg_linecap.rb +43 -0
  225. data/doc/ex/rvg_linejoin.rb +41 -0
  226. data/doc/ex/rvg_opacity.rb +19 -0
  227. data/doc/ex/rvg_pattern.rb +26 -0
  228. data/doc/ex/rvg_stroke_dasharray.rb +12 -0
  229. data/doc/ex/segment.rb +11 -0
  230. data/doc/ex/sepiatone.rb +8 -0
  231. data/doc/ex/shade.rb +11 -0
  232. data/doc/ex/shadow.rb +31 -0
  233. data/doc/ex/shave.rb +15 -0
  234. data/doc/ex/shear.rb +10 -0
  235. data/doc/ex/sketch.rb +18 -0
  236. data/doc/ex/skewx.rb +52 -0
  237. data/doc/ex/skewy.rb +47 -0
  238. data/doc/ex/smile.rb +125 -0
  239. data/doc/ex/solarize.rb +11 -0
  240. data/doc/ex/sparse_color.rb +55 -0
  241. data/doc/ex/splice.rb +9 -0
  242. data/doc/ex/spread.rb +11 -0
  243. data/doc/ex/stegano.rb +55 -0
  244. data/doc/ex/stroke_dasharray.rb +43 -0
  245. data/doc/ex/stroke_fill.rb +11 -0
  246. data/doc/ex/stroke_linecap.rb +44 -0
  247. data/doc/ex/stroke_linejoin.rb +48 -0
  248. data/doc/ex/stroke_width.rb +49 -0
  249. data/doc/ex/swirl.rb +17 -0
  250. data/doc/ex/text.rb +37 -0
  251. data/doc/ex/text01.rb +17 -0
  252. data/doc/ex/text_align.rb +36 -0
  253. data/doc/ex/text_antialias.rb +38 -0
  254. data/doc/ex/text_styles.rb +21 -0
  255. data/doc/ex/text_undercolor.rb +28 -0
  256. data/doc/ex/texture_fill_to_border.rb +34 -0
  257. data/doc/ex/texture_floodfill.rb +32 -0
  258. data/doc/ex/texturefill.rb +25 -0
  259. data/doc/ex/threshold.rb +13 -0
  260. data/doc/ex/to_blob.rb +14 -0
  261. data/doc/ex/translate.rb +39 -0
  262. data/doc/ex/transparent.rb +38 -0
  263. data/doc/ex/transpose.rb +9 -0
  264. data/doc/ex/transverse.rb +9 -0
  265. data/doc/ex/tref01.rb +25 -0
  266. data/doc/ex/triangle01.rb +16 -0
  267. data/doc/ex/trim.rb +24 -0
  268. data/doc/ex/tspan01.rb +18 -0
  269. data/doc/ex/tspan02.rb +19 -0
  270. data/doc/ex/tspan03.rb +21 -0
  271. data/doc/ex/unsharp_mask.rb +28 -0
  272. data/doc/ex/viewex.rb +35 -0
  273. data/doc/ex/vignette.rb +12 -0
  274. data/doc/ex/watermark.rb +28 -0
  275. data/doc/ex/wave.rb +9 -0
  276. data/doc/ex/wet_floor.rb +59 -0
  277. data/doc/ex/writing_mode01.rb +27 -0
  278. data/doc/ex/writing_mode02.rb +26 -0
  279. data/doc/ilist.html +2056 -0
  280. data/doc/image1.html +4680 -0
  281. data/doc/image2.html +3665 -0
  282. data/doc/image3.html +4522 -0
  283. data/doc/imageattrs.html +1638 -0
  284. data/doc/imusage.html +514 -0
  285. data/doc/index.html +416 -0
  286. data/doc/info.html +1499 -0
  287. data/doc/magick.html +565 -0
  288. data/doc/optequiv.html +2435 -0
  289. data/doc/rvg.html +975 -0
  290. data/doc/rvgclip.html +248 -0
  291. data/doc/rvggroup.html +305 -0
  292. data/doc/rvgimage.html +289 -0
  293. data/doc/rvgpattern.html +475 -0
  294. data/doc/rvgshape.html +406 -0
  295. data/doc/rvgstyle.html +270 -0
  296. data/doc/rvgtext.html +465 -0
  297. data/doc/rvgtspan.html +238 -0
  298. data/doc/rvgtut.html +530 -0
  299. data/doc/rvguse.html +145 -0
  300. data/doc/rvgxform.html +294 -0
  301. data/doc/scripts/doc.js +22 -0
  302. data/doc/scripts/stripeTables.js +23 -0
  303. data/doc/struct.html +1339 -0
  304. data/doc/usage.html +1621 -0
  305. data/examples/constitute.rb +7 -0
  306. data/examples/crop_with_gravity.rb +46 -0
  307. data/examples/demo.rb +324 -0
  308. data/examples/describe.rb +44 -0
  309. data/examples/find_similar_region.rb +34 -0
  310. data/examples/histogram.rb +325 -0
  311. data/examples/identify.rb +187 -0
  312. data/examples/image_opacity.rb +29 -0
  313. data/examples/import_export.rb +31 -0
  314. data/examples/pattern_fill.rb +38 -0
  315. data/examples/rotating_text.rb +45 -0
  316. data/examples/spinner.rb +50 -0
  317. data/examples/thumbnail.rb +65 -0
  318. data/examples/vignette.rb +79 -0
  319. data/ext/RMagick/Makefile +180 -0
  320. data/ext/RMagick/RMagick2.so +0 -0
  321. data/ext/RMagick/extconf.h +119 -0
  322. data/ext/RMagick/extconf.rb +406 -0
  323. data/ext/RMagick/mkmf.log +3022 -0
  324. data/ext/RMagick/rmagick.c +394 -0
  325. data/ext/RMagick/rmagick.h +1307 -0
  326. data/ext/RMagick/rmagick.o +0 -0
  327. data/ext/RMagick/rmdraw.c +1991 -0
  328. data/ext/RMagick/rmdraw.o +0 -0
  329. data/ext/RMagick/rmenum.c +1224 -0
  330. data/ext/RMagick/rmenum.o +0 -0
  331. data/ext/RMagick/rmfill.c +717 -0
  332. data/ext/RMagick/rmfill.o +0 -0
  333. data/ext/RMagick/rmilist.c +1217 -0
  334. data/ext/RMagick/rmilist.o +0 -0
  335. data/ext/RMagick/rmimage.c +15099 -0
  336. data/ext/RMagick/rmimage.o +0 -0
  337. data/ext/RMagick/rminfo.c +2567 -0
  338. data/ext/RMagick/rminfo.o +0 -0
  339. data/ext/RMagick/rmmain.c +1705 -0
  340. data/ext/RMagick/rmmain.o +0 -0
  341. data/ext/RMagick/rmmontage.c +511 -0
  342. data/ext/RMagick/rmmontage.o +0 -0
  343. data/ext/RMagick/rmpixel.c +1103 -0
  344. data/ext/RMagick/rmpixel.o +0 -0
  345. data/ext/RMagick/rmstruct.c +1047 -0
  346. data/ext/RMagick/rmstruct.o +0 -0
  347. data/ext/RMagick/rmutil.c +1730 -0
  348. data/ext/RMagick/rmutil.o +0 -0
  349. data/lib/RMagick.rb +1962 -0
  350. data/lib/rvg/clippath.rb +48 -0
  351. data/lib/rvg/container.rb +131 -0
  352. data/lib/rvg/deep_equal.rb +56 -0
  353. data/lib/rvg/describable.rb +53 -0
  354. data/lib/rvg/embellishable.rb +417 -0
  355. data/lib/rvg/misc.rb +740 -0
  356. data/lib/rvg/paint.rb +55 -0
  357. data/lib/rvg/pathdata.rb +131 -0
  358. data/lib/rvg/rvg.rb +283 -0
  359. data/lib/rvg/stretchable.rb +168 -0
  360. data/lib/rvg/stylable.rb +124 -0
  361. data/lib/rvg/text.rb +187 -0
  362. data/lib/rvg/to_c.rb +103 -0
  363. data/lib/rvg/transformable.rb +133 -0
  364. data/lib/rvg/units.rb +66 -0
  365. data/metaconfig +7 -0
  366. data/post-clean.rb +12 -0
  367. data/post-install.rb +50 -0
  368. data/post-setup.rb +254 -0
  369. data/rmagick.gemspec +20 -0
  370. data/setup.rb +1585 -0
  371. data/test/Draw.rb +121 -0
  372. data/test/Image1.rb +762 -0
  373. data/test/Image2.rb +1308 -0
  374. data/test/Image3.rb +1001 -0
  375. data/test/ImageList1.rb +808 -0
  376. data/test/ImageList2.rb +389 -0
  377. data/test/Image_attributes.rb +682 -0
  378. data/test/Import_Export.rb +116 -0
  379. data/test/Info.rb +349 -0
  380. data/test/Magick.rb +364 -0
  381. data/test/Pixel.rb +120 -0
  382. data/test/Preview.rb +62 -0
  383. data/test/all_basic.rb +39 -0
  384. data/test/cmyk.icm +0 -0
  385. data/test/srgb.icm +0 -0
  386. data/test/test.0 +0 -0
  387. data/uninstall.rb +74 -0
  388. metadata +455 -0
@@ -0,0 +1,4522 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <meta name="generator" content=
7
+ "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org" />
8
+
9
+ <title>RMagick 0.0.0: class Image (instance methods p-w)</title>
10
+ <meta http-equiv="Content-Type" content=
11
+ "text/html; charset=us-ascii" />
12
+ <meta name="GENERATOR" content="Quanta Plus" />
13
+ <meta name="Copyright" content=
14
+ "Copyright (C) 2006 by Timothy P. Hunter" />
15
+ <link rel="stylesheet" type="text/css" href="css/doc.css" />
16
+ <script type="text/javascript" src="scripts/doc.js">
17
+ </script>
18
+ <script type="text/javascript">
19
+ //<![CDATA[
20
+ <!-- Pre-load this image so that the browser knows how big it is. -->
21
+ <!-- Begin
22
+ flower_hat = new Image();
23
+ flower_hat.src = "ex/images/Flower_Hat.jpg";
24
+ // End -->
25
+ //]]>
26
+ </script>
27
+ <style type="text/css">
28
+ /*<![CDATA[*/
29
+
30
+ /*
31
+ * This style is used for the list of PreviewType
32
+ * constants defined for the preview method, below.
33
+ */
34
+ #prevlist ul {
35
+ float: left;
36
+ list-style: none;
37
+ margin-bottom: 0;
38
+ }
39
+
40
+ /*
41
+ * This style is used for the list of QuantumOperator
42
+ * constants defined for the quantum_operator method, below.
43
+ *
44
+ */
45
+ #quantum_op_list {
46
+ list-style-type: none;
47
+ }
48
+
49
+ /*]]>*/
50
+ </style>
51
+ </head>
52
+
53
+ <body>
54
+ <h6 id="header">RMagick 0.0.0 User's Guide and Reference</h6>
55
+
56
+ <div class="nav">
57
+ &laquo;&nbsp;<a href="image2.html">Prev</a> | <a href=
58
+ "index.html">Contents</a> | <a href=
59
+ "draw.html">Next</a>&nbsp;&raquo;
60
+ </div>
61
+
62
+ <h1>class Image <span class="superclass">&lt; Object</span>
63
+ (instance methods p-w)<br />
64
+ <span class="mixin">mixes in Comparable</span></h1>
65
+
66
+ <div id="toc">
67
+ <h2>Table of Contents</h2>
68
+
69
+ <h3>instance methods</h3>
70
+
71
+ <div>
72
+ <div class="toccol">
73
+ <ul>
74
+ <li><a href="#palette_q">palette?</a></li>
75
+
76
+ <li><a href=
77
+ "#paint_transparent">paint_transparent</a></li>
78
+
79
+ <li><a href="#pixel_color">pixel_color</a></li>
80
+
81
+ <li><a href="#polaroid">polaroid</a></li>
82
+
83
+ <li><a href="#posterize">posterize</a></li>
84
+
85
+ <li><a href="#preview">preview</a></li>
86
+
87
+ <li><a href="#profile_bang">profile!</a></li>
88
+
89
+ <li><a href="#properties">properties</a></li>
90
+
91
+ <li><a href="#quantize">quantize</a></li>
92
+
93
+ <li><a href="#quantum_operator">quantum_operator</a></li>
94
+
95
+ <li><a href="#radial_blur">radial_blur</a></li>
96
+
97
+ <li><a href=
98
+ "#radial_blur_channel">radial_blur_channel</a></li>
99
+
100
+ <li><a href="#raise">raise</a></li>
101
+
102
+ <li><a href=
103
+ "#random_threshold_channel">random_threshold_channel</a></li>
104
+
105
+ <li><a href="#recolor">recolor</a></li>
106
+
107
+ <li><a href="#reduce_noise">reduce_noise</a></li>
108
+
109
+ <li><a href="#remap">remap</a></li>
110
+
111
+ <li><a href="#resample">resample</a></li>
112
+
113
+ <li><a href="#resize">resize</a></li>
114
+
115
+ <li><a href="#resize_bang">resize!</a></li>
116
+
117
+ <li><a href="#resize_to_fill">resize_to_fill</a></li>
118
+
119
+ <li><a href=
120
+ "#resize_to_fill_bang">resize_to_fill!</a></li>
121
+
122
+ <li><a href="#resize_to_fit">resize_to_fit</a></li>
123
+
124
+ <li><a href="#resize_to_fit_bang">resize_to_fit!</a></li>
125
+
126
+ <li><a href="#roll">roll</a></li>
127
+
128
+ <li><a href="#rotate">rotate</a></li>
129
+
130
+ <li><a href="#rotate_bang">rotate!</a></li>
131
+ </ul>
132
+ </div>
133
+
134
+ <div class="toccol">
135
+ <ul>
136
+ <li><a href="#sample">sample</a></li>
137
+
138
+ <li><a href="#sample_bang">sample!</a></li>
139
+
140
+ <li><a href="#scale">scale</a></li>
141
+
142
+ <li><a href="#scale_bang">scale!</a></li>
143
+
144
+ <li><a href="#segment">segment</a></li>
145
+
146
+ <li><a href=
147
+ "#selective_blur_channel">selective_blur_channel</a></li>
148
+
149
+ <li><a href="#separate">separate</a></li>
150
+
151
+ <li><a href="#sepiatone">sepiatone</a></li>
152
+
153
+ <li><a href=
154
+ "#set_channel_depth">set_channel_depth</a></li>
155
+
156
+ <li><a href="#shade">shade</a></li>
157
+
158
+ <li><a href="#shadow">shadow</a></li>
159
+
160
+ <li><a href="#sharpen">sharpen</a></li>
161
+
162
+ <li><a href="#sharpen_channel">sharpen_channel</a></li>
163
+
164
+ <li><a href="#shave">shave</a></li>
165
+
166
+ <li><a href="#shave_bang">shave!</a></li>
167
+
168
+ <li><a href="#shear">shear</a></li>
169
+
170
+ <li><a href=
171
+ "#sigmoidal_contrast_channel">sigmoidal_contrast_channel</a></li>
172
+
173
+ <li><a href="#signature">signature</a></li>
174
+
175
+ <li><a href="#sketch">sketch</a></li>
176
+
177
+ <li><a href="#solarize">solarize</a></li>
178
+
179
+ <li><a href="#sparse_color">sparse_color</a></li>
180
+
181
+ <li><a href="#splice">splice</a></li>
182
+
183
+ <li><a href="#spread">spread</a></li>
184
+
185
+ <li><a href="#stegano">stegano</a></li>
186
+
187
+ <li><a href="#stereo">stereo</a></li>
188
+
189
+ <li><a href="#store_pixels">store_pixels</a></li>
190
+
191
+ <li><a href="#strip_bang">strip!</a></li>
192
+ </ul>
193
+ </div>
194
+
195
+ <div class="toccol">
196
+ <ul>
197
+ <li><a href="#swirl">swirl</a></li>
198
+
199
+ <li><a href="#sync_profiles">sync_profiles</a></li>
200
+
201
+ <li><a href=
202
+ "#texture_fill_to_border">texture_fill_to_border</a></li>
203
+
204
+ <li><a href=
205
+ "#texture_floodfill">texture_floodfill</a></li>
206
+
207
+ <li><a href="#threshold">threshold</a></li>
208
+
209
+ <li><a href="#thumbnail">thumbnail</a></li>
210
+
211
+ <li><a href="#thumbnail_bang">thumbnail!</a></li>
212
+
213
+ <li><a href="#to_blob">to_blob</a></li>
214
+
215
+ <li><a href="#to_color">to_color</a></li>
216
+
217
+ <li><a href="#transparent">transparent</a></li>
218
+
219
+ <li><a href=
220
+ "#transparent_chroma">transparent_chroma</a></li>
221
+
222
+ <li><a href="#transpose">transpose</a></li>
223
+
224
+ <li><a href="#transpose_bang">transpose!</a></li>
225
+
226
+ <li><a href="#transverse">transverse</a></li>
227
+
228
+ <li><a href="#transverse_bang">transverse!</a></li>
229
+
230
+ <li><a href="#trim">trim</a></li>
231
+
232
+ <li><a href="#trim_bang">trim!</a></li>
233
+
234
+ <li><a href="#unique_colors">unique_colors</a></li>
235
+
236
+ <li><a href="#unsharp_mask">unsharp_mask</a></li>
237
+
238
+ <li><a href=
239
+ "#unsharp_mask_channel">unsharp_mask_channel</a></li>
240
+
241
+ <li><a href="#view">view</a></li>
242
+
243
+ <li><a href="#vignette">vignette</a></li>
244
+
245
+ <li><a href="#watermark">watermark</a></li>
246
+
247
+ <li><a href="#wave">wave</a></li>
248
+
249
+ <li><a href="#wet_floor">wet_floor</a></li>
250
+
251
+ <li><a href="#white_threshold">white_threshold</a></li>
252
+
253
+ <li><a href="#write">write</a></li>
254
+ </ul>
255
+ </div>
256
+ </div>
257
+ </div>
258
+
259
+ <h2 class="methods">instance methods</h2>
260
+
261
+ <div class="sig">
262
+ <h3 id="palette_q">palette?</h3>
263
+
264
+ <p><span class="arg">img</span>.palette? -&gt; true or
265
+ false</p>
266
+ </div>
267
+
268
+ <div class="desc">
269
+ <h4>Description</h4>
270
+
271
+ <p class="imquote">Returns true if the image is <a href=
272
+ "constants.html#ClassType">PseudoClass</a> and has 256 unique
273
+ colors or less.</p>
274
+
275
+ <h4>Returns</h4>
276
+
277
+ <p>true or false</p>
278
+
279
+ <h4>Magick API</h4>
280
+
281
+ <p>IsPaletteImage</p>
282
+ </div>
283
+
284
+ <div class="sig">
285
+ <h3 id="paint_transparent">paint_transparent</h3>
286
+
287
+ <p><span class="arg">img</span>.paint_transparent(<span class=
288
+ "arg">color</span>, <span class=
289
+ "arg">opacity</span>=TransparentOpacity, <span class=
290
+ "arg">invert</span>=false, <span class=
291
+ "arg">fuzz</span>=<span class="arg">img</span>.fuzz) -&gt;
292
+ <em>image</em></p>
293
+ </div>
294
+
295
+ <div class="desc">
296
+ <h4>Description</h4>
297
+
298
+ <p>Changes the opacity value of all the pixels that match
299
+ <span class="arg">color</span> to the value specified by
300
+ <span class="arg">opacity</span>. If <span class=
301
+ "arg">invert</span> is true, changes the pixels that don't
302
+ match <span class="arg">color</span>.</p>
303
+
304
+ <h4>Arguments</h4>
305
+
306
+ <dl>
307
+ <dt>color</dt>
308
+
309
+ <dd>Either a <a href="imusage.html#color_names">color
310
+ name</a> or a <a href="struct.html#Pixel">pixel</a>.</dd>
311
+
312
+ <dt>opacity</dt>
313
+
314
+ <dd>The new opacity value, either an <a href=
315
+ "constants.html#Opacity">opacity</a> value or a number
316
+ between 0 and QuantumRange. The default is
317
+ TransparentOpacity.</dd>
318
+
319
+ <dt>invert</dt>
320
+
321
+ <dd>If true, changes all the pixels that are <em>not</em> the
322
+ target color.</dd>
323
+
324
+ <dt>fuzz</dt>
325
+
326
+ <dd>By default the pixel must match exactly, but you can
327
+ specify a tolerance level by passing a positive value.</dd>
328
+ </dl>
329
+
330
+ <h4>Returns</h4>
331
+
332
+ <p>A new image</p>
333
+
334
+ <h4>See also</h4>
335
+
336
+ <p><a href="image2.html#matte_replace">matte_replace</a>,
337
+ <a href="draw.html#matte">Draw#matte</a>, <a href=
338
+ "#transparent">transparent</a></p>
339
+
340
+ <h4>Magick API</h4>
341
+
342
+ <p>TransparentPaintImage</p>
343
+ </div>
344
+
345
+ <div class="sig">
346
+ <h3 id="pixel_color">pixel_color</h3>
347
+
348
+ <p><span class="arg">img</span>.pixel_color(<span class=
349
+ "arg">x</span>, <span class="arg">y</span>[, <span class=
350
+ "arg">new_color</span>]) -&gt; <em>pixel</em></p>
351
+ </div>
352
+
353
+ <div class="desc">
354
+ <h4>Description</h4>
355
+
356
+ <p>Returns the color of the pixel at <span class=
357
+ "arg">x</span>, <span class="arg">y</span>. Optionally, changes
358
+ the color of the pixel to a new color.</p>
359
+
360
+ <p>If new_color is specified, pixel_color changes the image
361
+ type to DirectClass if necessary.</p>
362
+
363
+ <h4>Arguments</h4>
364
+
365
+ <dl>
366
+ <dt>x, y</dt>
367
+
368
+ <dd>The x- and y-coordinates of the pixel.</dd>
369
+
370
+ <dt>new_color</dt>
371
+
372
+ <dd>If specified, the pixel is set to this color. May be
373
+ either a <a href="imusage.html#color_names">color name</a> or
374
+ a <a href="struct.html#Pixel">Pixel</a>.</dd>
375
+ </dl>
376
+
377
+ <h4>Returns</h4>A <a href="struct.html#Pixel">Pixel</a> having
378
+ the RGB values of the specified pixel.
379
+
380
+ <h4>Example</h4>
381
+ <pre>
382
+ old = image.pixel_color(20,40,"white")
383
+ </pre>
384
+
385
+ <h4>Magick API</h4>
386
+
387
+ <p>AcquireImagePixels</p>
388
+ </div>
389
+
390
+ <div class="sig">
391
+ <h3 id="polaroid">polaroid</h3>
392
+
393
+ <p><span class="arg">img</span>.polaroid(angle=-5.0) [
394
+ <span class="arg">{ optional arguments }</span> ] -&gt;
395
+ image</p>
396
+ </div>
397
+
398
+ <div class="desc">
399
+ <h4>Description</h4>
400
+
401
+ <p>Produce an image that looks like a Polaroid&reg; instant
402
+ picture. If the image has a "Caption" <a href=
403
+ "image1.html#aset">property</a>, the value is used as a
404
+ caption.</p>
405
+
406
+ <p>Optional arguments may be specified in a block associated
407
+ with the method. These arguments control the shadow color and
408
+ how the label is rendered. By default the shadow color is
409
+ gray75. To specify a different shadow color, use
410
+ <code>self.shadow_color</code>. To specify a different border
411
+ color (that is, the color of the image border) use
412
+ <code>self.border_color</code>. Both of these methods accept
413
+ either a <a href="imusage.html#color_names">color name</a> or a
414
+ <a href="struct.html#Pixel">Pixel</a> argument.</p>
415
+
416
+ <p>The following <a href="draw.html#annotate">annotate</a>
417
+ attributes control the label rendering: <a href=
418
+ "draw.html#align_eq">align</a>, <a href=
419
+ "draw.html#decorate_eq">decorate</a>, <a href=
420
+ "draw.html#density_eq">density</a>, <a href=
421
+ "draw.html#encoding_eq">encoding</a>, <a href=
422
+ "draw.html#fill_eq">fill</a>, <a href=
423
+ "draw.html#font_eq">font</a>, <a href=
424
+ "draw.html#font_family_eq">font_family</a>, <a href=
425
+ "draw.html#font_stretch_eq">font_stretch</a>, <a href=
426
+ "draw.html#font_style_eq">font_style</a>, <a href=
427
+ "draw.html#font_weight_eq">font_weight</a>, <a href=
428
+ "draw.html#gravity_eq">gravity</a>, <a href=
429
+ "draw.html#pointsize_eq">pointsize</a>, <a href=
430
+ "draw.html#stroke_eq">stroke</a>, <a href=
431
+ "draw.html#stroke_width_eq">stroke_width</a>, <a href=
432
+ "draw.html#text_antialias_eq">text_antialias</a>, <a href=
433
+ "draw.html#undercolor_eq">undercolor</a>.</p>
434
+ <pre>
435
+ img.polaroid do
436
+ self.shadow_color = "gray40"
437
+ self.pointsize = 12
438
+ end
439
+ </pre>
440
+
441
+ <h4>Arguments</h4>
442
+
443
+ <dl>
444
+ <dt>angle</dt>
445
+
446
+ <dd>The resulting image is rotated by this amount, measured
447
+ in degrees. The default is -5.0.</dd>
448
+ </dl>
449
+
450
+ <h4>Example</h4>
451
+
452
+ <p><a href="javascript:popup('polaroid.rb.html')"><img src=
453
+ "ex/polaroid.jpg" alt="polaroid example" /></a></p>
454
+
455
+ <h4>Magick API</h4>
456
+
457
+ <p>PolaroidImage</p>
458
+
459
+ <h4>See also</h4>
460
+
461
+ <p><a href=
462
+ "http://rmagick.rubyforge.org/Polaroid/polaroid.html">The
463
+ Polaroid Effect</a></p>
464
+
465
+ <h4>Notes</h4>
466
+
467
+ <p>"Polaroid" and the other names of products of Polaroid
468
+ Corporation are trademarks of Polaroid Corporation.</p>
469
+ </div>
470
+
471
+ <div class="sig">
472
+ <h3 id="posterize">posterize</h3>
473
+
474
+ <p><span class="arg">img</span>.posterize(<span class=
475
+ "arg">levels</span>=4, <span class="arg">dither</span>=false)
476
+ -&gt; <em>image</em></p>
477
+ </div>
478
+
479
+ <div class="desc">
480
+ <h4>Description</h4>
481
+
482
+ <p class="imquote">Reduces the image to a limited number of
483
+ colors for a "poster" effect.</p>
484
+
485
+ <h4>Arguments</h4>
486
+
487
+ <dl>
488
+ <dt>levels</dt>
489
+
490
+ <dd><span class="imquote">Number of color levels allowed in
491
+ each channel. Very low values (2, 3, or 4) have the most
492
+ visible effect.</span> The default is 4.</dd>
493
+
494
+ <dt>dither</dt>
495
+
496
+ <dd>If true, dither the image. The default is false.</dd>
497
+ </dl>
498
+
499
+ <h4>Returns</h4>
500
+
501
+ <p>A new image</p>
502
+
503
+ <h4>Example</h4>
504
+
505
+ <p class="rollover"><a href=
506
+ "javascript:popup('posterize.rb.html')"><img src=
507
+ "ex/posterize.jpg" alt="posterize example" onmouseover=
508
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
509
+ "this.src='ex/posterize.jpg'" title=
510
+ "Click to see the example script" /></a> <img src=
511
+ "ex/images/spin.gif" alt="" class="spin" title=
512
+ "Mouse over the example to see the original image" /></p>
513
+
514
+ <h4>See also</h4>
515
+
516
+ <p><a href="image2.html#ordered_dither">ordered_dither</a>,
517
+ <a href="image3.html#quantize">quantize</a></p>
518
+
519
+ <h4>Magick API</h4>
520
+
521
+ <p>PosterizeImage</p>
522
+ </div>
523
+
524
+ <div class="sig">
525
+ <h3 id="preview">preview</h3>
526
+
527
+ <p><span class="arg">img</span>.preview(<span class=
528
+ "arg">preview</span>) -&gt; <em>image</em></p>
529
+ </div>
530
+
531
+ <div class="desc">
532
+ <h4>Description</h4>
533
+
534
+ <p>Creates an image that contains 9 small versions of the
535
+ receiver image. The center image is the unchanged receiver. The
536
+ other 8 images are variations created by transforming the
537
+ receiver according to the specified preview type with varying
538
+ parameters.</p>
539
+
540
+ <p>A preview image is an easy way to "try out" a transformation
541
+ method.</p>
542
+
543
+ <h4>Arguments</h4>
544
+
545
+ <p>One of the following PreviewType constants:</p>
546
+
547
+ <div id="prevlist">
548
+ <ul>
549
+ <li>RotatePreview</li>
550
+
551
+ <li>ShearPreview</li>
552
+
553
+ <li>RollPreview</li>
554
+
555
+ <li>HuePreview</li>
556
+
557
+ <li>SaturationPreview</li>
558
+
559
+ <li>BrightnessPreview</li>
560
+
561
+ <li>GammaPreview</li>
562
+
563
+ <li>SpiffPreview</li>
564
+
565
+ <li>DullPreview</li>
566
+
567
+ <li>GrayscalePreview</li>
568
+
569
+ <li>QuantizePreview</li>
570
+
571
+ <li>DespecklePreview</li>
572
+
573
+ <li>ReduceNoisePreview</li>
574
+
575
+ <li>AddNoisePreview</li>
576
+
577
+ <li>SharpenPreview</li>
578
+ </ul>
579
+
580
+ <ul>
581
+ <li>BlurPreview</li>
582
+
583
+ <li>ThresholdPreview</li>
584
+
585
+ <li>EdgeDetectPreview</li>
586
+
587
+ <li>SpreadPreview</li>
588
+
589
+ <li>SolarizePreview</li>
590
+
591
+ <li>ShadePreview</li>
592
+
593
+ <li>RaisePreview</li>
594
+
595
+ <li>SegmentPreview</li>
596
+
597
+ <li>SwirlPreview</li>
598
+
599
+ <li>ImplodePreview</li>
600
+
601
+ <li>WavePreview</li>
602
+
603
+ <li>OilPaintPreview</li>
604
+
605
+ <li>CharcoalDrawingPreview</li>
606
+
607
+ <li>JPEGPreview</li>
608
+ </ul>
609
+ </div>
610
+
611
+ <div style="clear:both"></div>
612
+
613
+ <h4>Returns</h4>
614
+
615
+ <p>A new image</p>
616
+
617
+ <h4>Example</h4>
618
+
619
+ <p>This half-size preview demonstrates the SolarizePreview
620
+ argument.</p>
621
+
622
+ <p><a href="javascript:popup('preview.rb.html')"><img src=
623
+ "ex/preview.jpg" alt="preview example" title=
624
+ "Click to see the example script" /></a></p>
625
+
626
+ <h4>Magick API</h4>
627
+
628
+ <p>PreviewImage</p>
629
+ </div>
630
+
631
+ <div class="sig">
632
+ <h3 id="profile_bang">profile!</h3>
633
+
634
+ <p><span class="arg">img</span>.profile!(<span class=
635
+ "arg">name</span>, <span class="arg">profile</span>) -&gt;
636
+ <em>self</em></p>
637
+ </div>
638
+
639
+ <div class="desc">
640
+ <h4>Description</h4>
641
+
642
+ <p><span class="imquote">Adds or removes a ICM, IPTC, or
643
+ generic profile from an image.</span> If <code>profile</code>
644
+ is <code>nil</code>, the specified profile is removed from the
645
+ image. Use <code>profile('*', nil)</code> to remove all
646
+ profiles from the image.</p>
647
+
648
+ <h4>Arguments</h4>
649
+
650
+ <dl>
651
+ <dt>name</dt>
652
+
653
+ <dd>The profile name, or "*" to represent all the profiles in
654
+ the image.</dd>
655
+
656
+ <dt>profile</dt>
657
+
658
+ <dd>The profile value, or <code>nil</code> to cause the
659
+ profile to be removed.</dd>
660
+ </dl>
661
+
662
+ <h4>Returns</h4>
663
+
664
+ <p>self</p>
665
+
666
+ <h4>See also</h4>
667
+
668
+ <p><a href="image1.html#add_profile">add_profile</a> and
669
+ <a href="image1.html#delete_profile">delete_profile</a> perform
670
+ very similar functions. However, <code>add_profile</code>
671
+ accepts the name of a profile file on disk instead of the
672
+ profile data itself and, if the file contains more than one
673
+ profile, will load all the profiles at once.</p>
674
+
675
+ <h4>Magick API</h4>
676
+
677
+ <p>ProfileImage</p>
678
+
679
+ <h4>Notes</h4>
680
+
681
+ <p>ImageMagick does not automatically remove profiles when
682
+ resizing images. If you are trying to make your JPEG thumbnail
683
+ images as small as possible, use <code>profile!</code> to
684
+ remove any profiles from the image as well. Also see <a href=
685
+ "#strip_bang">strip!</a></p>
686
+ </div>
687
+
688
+ <div class="sig">
689
+ <h3 id="properties">properties</h3>
690
+
691
+ <p><span class="arg">img</span>.properties <span class="arg">[
692
+ {|name,value| block} ]</span> -&gt; <em>hash</em></p>
693
+ </div>
694
+
695
+ <div class="desc">
696
+ <h4>Description</h4>
697
+
698
+ <p>If called with an associated block, <code>properties</code>
699
+ runs the block once for each property defined for the image.
700
+ The block arguments are the property name and its value. If
701
+ there is no block, <code>properties</code> returns a hash with
702
+ one element for each property. The hash key is the property
703
+ name and the associated value is the property value.</p>
704
+
705
+ <h4>Returns</h4>
706
+
707
+ <p>If called without a block, returns a hash, otherwise returns
708
+ <code>self</code>.</p>
709
+
710
+ <h4>See also</h4>
711
+
712
+ <p><a href="image1.html#aref">[&nbsp;]</a>, <a href=
713
+ "image1.html#aset">[&nbsp;]=</a></p>
714
+
715
+ <h4>Note</h4>
716
+
717
+ <p>The EXIF property is not created until the first time an
718
+ EXIF tag or entry number is referenced.</p>
719
+ </div>
720
+
721
+ <div class="sig">
722
+ <h3 id="quantize">quantize</h3>
723
+
724
+ <p><span class="arg">img</span>.quantize(<span class=
725
+ "arg">number_colors</span>=256, <span class=
726
+ "arg">colorspace</span>=RGBColorspace, <span class=
727
+ "arg">dither</span>=<code>RiemersmaDitherMethod</code>,
728
+ <span class="arg">tree_depth</span>=0, <span class=
729
+ "arg">measure_error</span>=<code>false</code>) -&gt;
730
+ <em>image</em></p>
731
+ </div>
732
+
733
+ <div class="desc">
734
+ <h4>Description</h4>
735
+
736
+ <p class="imquote">Analyzes the colors within a reference image
737
+ and chooses a fixed number of colors to represent the image.
738
+ The goal of the algorithm is to minimize the difference between
739
+ the input and output image while minimizing the processing
740
+ time.</p>
741
+
742
+ <h4>Arguments</h4>
743
+
744
+ <dl>
745
+ <dt>number_colors</dt>
746
+
747
+ <dd>The maximum number of colors in the result image. Must be
748
+ &lt;= <a href=
749
+ "constants.html#Miscellaneous_constants">QuantumRange</a>.</dd>
750
+
751
+ <dt>colorspace</dt>
752
+
753
+ <dd class="imquote">The <a href=
754
+ "constants.html#ColorspaceType">colorspace</a> to quantize
755
+ in. Color reduction, by default, takes place in the RGB color
756
+ space.&nbsp; Empirical evidence&nbsp;suggests that distances
757
+ in color spaces such as YUV or YIQ&nbsp; correspond&nbsp;
758
+ to&nbsp; perceptual&nbsp; color differences more closely
759
+ than&nbsp; do distances in RGB space. The Transparent color
760
+ space behaves uniquely in that it preserves the matte channel
761
+ of the image if it exists.</dd>
762
+
763
+ <dt>dither</dt>
764
+
765
+ <dd>A <a href="constants.html#DitherMethod">DitherMethod</a>
766
+ value. Set to <code>NoDitherMethod</code> to disable
767
+ dithering. See the documentation for the <a href=
768
+ "http://redux.imagemagick.org/script/command-line-options.php#dither">
769
+ ImageMagick -dither option</a> for more information.</dd>
770
+
771
+ <dt>tree_depth</dt>
772
+
773
+ <dd><span class="imquote">The tree depth to use while
774
+ quantizing. The values 0 and 1 support automatic tree depth
775
+ determination. The tree depth may be forced via values
776
+ ranging from 2 to 8. The ideal tree depth depends on the
777
+ characteristics of the input image, and may be determined
778
+ through experimentation.</span> See the documentation for the
779
+ <a href=
780
+ "http://redux.imagemagick.org/script/command-line-options.php#treedepth">
781
+ ImageMagick -treedepth option</a> for more information.</dd>
782
+
783
+ <dt>measure_error</dt>
784
+
785
+ <dd class="imquote">Set to <code>true</code> to calculate
786
+ quantization errors when quantizing the image.</dd>
787
+ </dl>
788
+
789
+ <h4>Returns</h4>
790
+
791
+ <p>A new image</p>
792
+
793
+ <h4>Example</h4>
794
+
795
+ <p>See the example for <a href=
796
+ "image1.html#colorize">colorize</a>.</p>
797
+
798
+ <h4>See also</h4>
799
+
800
+ <p><a href="image2.html#ordered_dither">ordered_dither</a>,
801
+ <a href="image3.html#posterize">posterize</a>, <a href=
802
+ "ilist.html#quantize">ImageList#quantize</a></p>
803
+
804
+ <h4>Magick API</h4>
805
+
806
+ <p>QuantizeImage</p>
807
+ </div>
808
+
809
+ <div class="sig">
810
+ <h3 id="quantum_operator">quantum_operator</h3>
811
+
812
+ <p><span class="arg">img</span>.quantum_operator(<span class=
813
+ "arg">operator</span>, <span class="arg">rvalue</span>,
814
+ <span class="arg">channel</span>=AllChannels) -&gt;
815
+ <em>self</em></p>
816
+ </div>
817
+
818
+ <div class="desc">
819
+ <h4>Description</h4>
820
+
821
+ <p>Performs the requested integer arithmetic operation on the
822
+ selected channel of the image. This method allows simple
823
+ arithmetic operations on the component values of all pixels in
824
+ an image. Of course, you could also do this in Ruby using
825
+ <a href="image2.html#get_pixels">get_pixels</a> and <a href=
826
+ "#store_pixels">store_pixels</a>, or <a href="#view">view</a>,
827
+ but <code>quantum_operator</code> will be faster, especially
828
+ for large numbers of pixels, since it does not need to convert
829
+ the pixels from C to Ruby.</p>
830
+
831
+ <h4>Arguments</h4>
832
+
833
+ <dl>
834
+ <dt>operator</dt>
835
+
836
+ <dd>
837
+ One of the following <code>QuantumExpressionOperator</code>
838
+ constants:
839
+
840
+ <ul id="quantum_op_list">
841
+ <li>AddQuantumOperator</li>
842
+
843
+ <li><code>AndQuantumOperator</code></li>
844
+
845
+ <li><code>DivideQuantumOperator</code></li>
846
+
847
+ <li><code>LShiftQuantumOperator</code></li>
848
+
849
+ <li><code>MaxQuantumOperator</code></li>
850
+
851
+ <li><code>MinQuantumOperator</code></li>
852
+
853
+ <li><code>MultiplyQuantumOperator</code></li>
854
+
855
+ <li><code>OrQuantumOperator</code></li>
856
+
857
+ <li><code>RShiftQuantumOperator</code></li>
858
+
859
+ <li><code>SubtractQuantumOperator</code></li>
860
+
861
+ <li><code>XorQuantumOperator</code></li>
862
+
863
+ <li><code>PowQuantumOperator</code></li>
864
+
865
+ <li><code>LogQuantumOperator</code></li>
866
+
867
+ <li><code>ThresholdQuantumOperator</code></li>
868
+
869
+ <li><code>ThresholdBlackQuantumOperator</code></li>
870
+
871
+ <li><code>ThresholdWhiteQuantumOperator</code></li>
872
+
873
+ <li><code>GaussianNoiseQuantumOperator</code></li>
874
+
875
+ <li><code>ImpulseNoiseQuantumOperator</code></li>
876
+
877
+ <li><code>LaplacianNoiseQuantumOperator</code></li>
878
+
879
+ <li><code>MultiplicativeNoiseQuantumOperator</code></li>
880
+
881
+ <li><code>PoissonNoiseQuantumOperator</code></li>
882
+
883
+ <li><code>UniformNoiseQuantumOperator</code></li>
884
+
885
+ <li><code>CosineQuantumOperator</code></li>
886
+
887
+ <li><code>SineQuantumOperator</code></li>
888
+
889
+ <li><code>AddModulusQuantumOperator</code></li>
890
+ </ul>Some of these constants are not defined in older
891
+ releases of ImageMagick. To see which ones are defined,
892
+ enter this statement in IRB:
893
+ <pre>
894
+ Magick::QuantumExpressionOperator.values {|v| puts v}
895
+ </pre>
896
+ </dd>
897
+
898
+ <dt>rvalue</dt>
899
+
900
+ <dd>a <code>Numeric</code> operation rvalue.</dd>
901
+
902
+ <dt>channel</dt>
903
+
904
+ <dd>A <a href="constants.html#ChannelType">ChannelType</a>
905
+ value. The default is to operate on the R, G. and B
906
+ channels.</dd>
907
+ </dl>
908
+
909
+ <h4>Returns</h4>
910
+
911
+ <p>self</p>
912
+
913
+ <h4>Example</h4>
914
+
915
+ <p>Divide the red component of all the pixels in the image by
916
+ 2:</p>
917
+ <pre>
918
+ img.quantum_operator(DivideQuantumOperator, 2, RedChannel)
919
+ </pre>
920
+
921
+ <h4>See also</h4>
922
+
923
+ <p><a href=
924
+ "image2.html#function_channel">function_channel</a></p>
925
+
926
+ <p>The <a href="struct.html#view">Image:View</a> class supports
927
+ operations on individual pixels and collections of pixels, as
928
+ well as operations on channels within pixels. See <a href=
929
+ "#view">view</a>, below.</p>
930
+
931
+ <h4>Magick API</h4>
932
+
933
+ <p>EvaluateImageChannel</p>
934
+ </div>
935
+
936
+ <div class="sig">
937
+ <h3 id="radial_blur">radial_blur</h3>
938
+
939
+ <p><span class="arg">img</span>.radial_blur(<span class=
940
+ "arg">float</span>) -&gt; <em>image</em></p>
941
+ </div>
942
+
943
+ <div class="desc">
944
+ <h4>Description</h4>
945
+
946
+ <p class="imquote">Applies a radial blur to the image.</p>
947
+
948
+ <h4>Arguments</h4>
949
+
950
+ <dl>
951
+ <dt>angle</dt>
952
+
953
+ <dd>Amount of blur, in degrees</dd>
954
+ </dl>
955
+
956
+ <h4>Returns</h4>
957
+
958
+ <p>A new image</p>
959
+
960
+ <h4>Example</h4>
961
+
962
+ <p class="rollover"><a href=
963
+ "javascript:popup('radial_blur.rb.html')"><img src=
964
+ "ex/radial_blur.jpg" onmouseover=
965
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
966
+ "this.src='ex/radial_blur.jpg'" alt="radial_blur example"
967
+ title="Click to see the example script" /></a> <img src=
968
+ "ex/images/spin.gif" alt="" class="spin" title=
969
+ "Mouse over the example to see the original image" /></p>
970
+
971
+ <h4>See also</h4>
972
+
973
+ <p><a href="image1.html#blur_image">blur_image</a>, <a href=
974
+ "image2.html#gaussian_blur">gaussian_blur</a>, <a href=
975
+ "image2.html#motion_blur">motion_blur</a>, <a href=
976
+ "#radial_blur_channel">radial_blur_channel</a>, <a href=
977
+ "#selective_blur_channel">selective_blur_channel</a></p>
978
+
979
+ <h4>Magick API</h4>
980
+
981
+ <p>RadialBlurImage</p>
982
+ </div>
983
+
984
+ <div class="sig">
985
+ <h3 id="radial_blur_channel">radial_blur_channel</h3>
986
+
987
+ <p><span class=
988
+ "arg">img</span>.radial_blur_channel(<span class="arg">float</span>
989
+ [, <span class="arg">channel</span>...]) -&gt;
990
+ <em>image</em></p>
991
+ </div>
992
+
993
+ <div class="desc">
994
+ <h4>Description</h4>
995
+
996
+ <p>Applies a radial blur to the selected image channels.</p>
997
+
998
+ <h4>Arguments</h4>
999
+
1000
+ <dl>
1001
+ <dt>angle</dt>
1002
+
1003
+ <dd>Amount of blur, in degrees</dd>
1004
+
1005
+ <dt>channel...</dt>
1006
+
1007
+ <dd>0 or more <a href=
1008
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
1009
+ channels are specified, all the channels are blurred.</dd>
1010
+ </dl>
1011
+
1012
+ <h4>Returns</h4>
1013
+
1014
+ <p>A new image</p>
1015
+
1016
+ <h4>See also</h4>
1017
+
1018
+ <p><a href="#radial_blur">radial_blur</a></p>
1019
+
1020
+ <h4>Magick API</h4>
1021
+
1022
+ <p>RadialBlurImageChannel</p>
1023
+ </div>
1024
+
1025
+ <div class="sig">
1026
+ <h3 id="raise">raise</h3>
1027
+
1028
+ <p><span class="arg">img</span>.raise(<span class=
1029
+ "arg">width</span>=6, <span class="arg">height</span>=6,
1030
+ <span class="arg">raised</span>=<code>true</code>) -&gt;
1031
+ <em>image</em></p>
1032
+ </div>
1033
+
1034
+ <div class="desc">
1035
+ <h4>Description</h4>
1036
+
1037
+ <p class="imquote">Creates a simulated three-dimensional
1038
+ button-like effect by lightening and darkening the edges of the
1039
+ image.</p>
1040
+
1041
+ <h4>Arguments</h4>
1042
+
1043
+ <dl>
1044
+ <dt>width</dt>
1045
+
1046
+ <dd>The width of the raised edge in pixels. The default is
1047
+ 6.</dd>
1048
+
1049
+ <dt>height</dt>
1050
+
1051
+ <dd>The height of the raised edge in pixels. The default is
1052
+ 6.</dd>
1053
+
1054
+ <dt>raised</dt>
1055
+
1056
+ <dd>If <code>true</code>, the image is raised, otherwise
1057
+ lowered.</dd>
1058
+ </dl>
1059
+
1060
+ <h4>Returns</h4>
1061
+
1062
+ <p>A new image</p>
1063
+
1064
+ <h4>Example</h4>
1065
+
1066
+ <p class="rollover"><a href=
1067
+ "javascript:popup('raise.rb.html')"><img src="ex/raise.jpg"
1068
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1069
+ "this.src='ex/raise.jpg'" alt="raise example" title=
1070
+ "Click to see the example script" /></a> <img src=
1071
+ "ex/images/spin.gif" alt="" class="spin" title=
1072
+ "Mouse over the example to see the original image" /></p>
1073
+
1074
+ <h4>Magick API</h4>
1075
+
1076
+ <p>RaiseImage</p>
1077
+ </div>
1078
+
1079
+ <div class="sig">
1080
+ <h3 id="random_threshold_channel">random_threshold_channel</h3>
1081
+
1082
+ <p><span class="arg">img</span>.random_threshold_channel(
1083
+ <span class="arg">thresholds</span>, [<span class=
1084
+ "arg">channel</span>...] ) -&gt; <em>image</em></p>
1085
+ </div>
1086
+
1087
+ <div class="desc">
1088
+ <h4>Description</h4>
1089
+
1090
+ <p class="imquote">Changes the value of individual pixels based
1091
+ on the intensity of each pixel compared to a random threshold.
1092
+ The result is a low-contrast, two color image.</p>
1093
+
1094
+ <h4>Arguments</h4>
1095
+
1096
+ <dl>
1097
+ <dt>thresholds</dt>
1098
+
1099
+ <dd><span class="imquote">A geometry string containing
1100
+ LOWxHIGH thresholds.</span> The string is in the form `XxY'.
1101
+ The Y value may be omitted, in which case it is assigned the
1102
+ value QuantumRange-X. If an % appears in the string then the
1103
+ values are assumed to be percentages of QuantumRange.
1104
+ <span class="imquote">If the string contains 2x2, 3x3, or
1105
+ 4x4, then an ordered dither of order 2, 3, or 4 will be
1106
+ performed instead.</span> A <a href=
1107
+ "struct.html#Geometry">Geometry</a> object may be used as
1108
+ well.</dd>
1109
+
1110
+ <dt>channel...</dt>
1111
+
1112
+ <dd>0 or more <a href=
1113
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
1114
+ channels are specified, all the channels are
1115
+ thresholded.</dd>
1116
+ </dl>
1117
+
1118
+ <h4>Returns</h4>
1119
+
1120
+ <p>A new image</p>
1121
+
1122
+ <h4>Example</h4>
1123
+ <pre>
1124
+ geom = Geometry.new(QuantumRange/2)
1125
+ random_threshold_channel(geom, RedChannel)
1126
+ </pre>
1127
+
1128
+ <p class="rollover"><a href=
1129
+ "javascript:popup('random_threshold_channel.rb.html')"><img src="ex/random_threshold_channel.jpg"
1130
+ alt="random_threshold_channel example" title=
1131
+ "Click to see the example script" onmouseover=
1132
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1133
+ "this.src='ex/random_threshold_channel.jpg'" /></a> <img src=
1134
+ "ex/images/spin.gif" alt="" class="spin" title=
1135
+ "Mouse over the example to see the original image" /></p>
1136
+
1137
+ <h4>See also</h4>
1138
+
1139
+ <p><a href=
1140
+ "image1.html#adaptive_threshold">adaptive_threshold</a>,
1141
+ <a href="image1.html#bilevel_channel">bilevel_channel</a>,
1142
+ <a href="#threshold">threshold</a></p>
1143
+
1144
+ <h4>Magick API</h4>
1145
+
1146
+ <p>RandomThresholdImageChannel</p>
1147
+ </div>
1148
+
1149
+ <div class="sig">
1150
+ <h3 id="recolor">recolor</h3>
1151
+
1152
+ <p><span class="arg">img</span>.recolor(<span class=
1153
+ "arg">color_matrix</span>) -&gt; <em>image</em></p>
1154
+ </div>
1155
+
1156
+ <div class="desc">
1157
+ <h4>Description</h4>
1158
+
1159
+ <p>Use this method to <span class="imquote">translate, scale,
1160
+ shear, or rotate image colors. Although you can use variable
1161
+ sized matrices, typically you use a 5&times;5 for an RGBA image
1162
+ and a 6&times;6 for CMYKA. Populate the last row with
1163
+ normalized values to translate.</span></p>
1164
+
1165
+ <h4>Arguments</h4>
1166
+
1167
+ <p>An array of Float values representing the recolor
1168
+ matrix.</p>
1169
+
1170
+ <h4>Magick API</h4>
1171
+
1172
+ <p>RecolorImage</p>
1173
+ </div>
1174
+
1175
+ <div class="sig">
1176
+ <h3 id="reduce_noise">reduce_noise</h3>
1177
+
1178
+ <p><span class="arg">img</span>.reduce_noise(<span class=
1179
+ "arg">radius</span>) -&gt; <em>image</em></p>
1180
+ </div>
1181
+
1182
+ <div class="desc">
1183
+ <h4>Description</h4>
1184
+
1185
+ <p class="imquote">Smooths the contours of an image while still
1186
+ preserving edge information. The algorithm works by replacing
1187
+ each pixel with its neighbor closest in value.</p>
1188
+
1189
+ <h4>Arguments</h4>
1190
+
1191
+ <dl>
1192
+ <dt>radius</dt>
1193
+
1194
+ <dd class="imquote">A neighbor is defined by radius. Use a
1195
+ radius of 0 and <code>reduce_noise</code> selects a suitable
1196
+ radius for you.</dd>
1197
+ </dl>
1198
+
1199
+ <h4>Returns</h4>
1200
+
1201
+ <p>A new image</p>
1202
+
1203
+ <h4>Example</h4>
1204
+
1205
+ <p>The left side of the image has been modified by <a href=
1206
+ "#Image.add_noise"><code>add_noise</code></a>. The right side
1207
+ has been filtered by <code>reduce_noise(0)</code>.</p>
1208
+
1209
+ <p><a href="javascript:popup('reduce_noise.rb.html')"><img src=
1210
+ "ex/reduce_noise.jpg" title="Click to see the example script"
1211
+ alt="reduce_noise example" /></a></p>
1212
+
1213
+ <h4>See also</h4>
1214
+
1215
+ <p><a href="image2.html#enhance">enhance</a>, <a href=
1216
+ "#unsharp_mask">unsharp_mask</a></p>
1217
+
1218
+ <h4>Magick API</h4>
1219
+
1220
+ <p>ReduceNoiseImage</p>
1221
+ </div>
1222
+
1223
+ <div class="sig">
1224
+ <h3 id="remap">remap</h3>
1225
+
1226
+ <p><span class="arg">img</span>.remap(<span class=
1227
+ "arg">remap_image</span>, <span class=
1228
+ "arg">dither</span>=RiemersmaDitherMethod) -&gt;
1229
+ <em>self</em></p>
1230
+ </div>
1231
+
1232
+ <div class="desc">
1233
+ <h4>Description</h4>
1234
+
1235
+ <p>Reduce the number of colors in <span class="arg">img</span>
1236
+ to the colors used by <span class="arg">remap_image</span>. If
1237
+ a dither method is specified <span class="imquote">then the
1238
+ given colors are dithered over the image as necessary,
1239
+ otherwise the closest color (in RGB colorspace) is selected to
1240
+ replace that pixel in the image.</span></p>
1241
+
1242
+ <h4>Arguments</h4>
1243
+
1244
+ <dl>
1245
+ <dt>remap_image</dt>
1246
+
1247
+ <dd>The reference image</dd>
1248
+
1249
+ <dt>dither</dt>
1250
+
1251
+ <dd>A <a href="constants.html#DitherMethod">DitherMethod</a>
1252
+ value. RiemersmaDitherMethod is the default. To disable
1253
+ dithering specify NoDitherMethod.</dd>
1254
+ </dl>
1255
+
1256
+ <h4>Returns</h4>
1257
+
1258
+ <p>self</p>
1259
+
1260
+ <h4>Example</h4>
1261
+
1262
+ <p class="rollover"><a href=
1263
+ "javascript:popup('remap.rb.html')"><img onmouseover=
1264
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1265
+ "this.src='ex/remap.jpg'" src="ex/remap.jpg" alt=
1266
+ "remap example" title="Click to see the example script" /></a>
1267
+ <img src="ex/images/spin.gif" alt="" class="spin" style=
1268
+ "left: 202px;" title=
1269
+ "Mouse over the example to see the original image" /></p>
1270
+
1271
+ <h4>See also</h4>
1272
+
1273
+ <p><a href="ilist.html#remap">ImageList#remap</a></p>
1274
+
1275
+ <h4>Magick API</h4>
1276
+
1277
+ <p>RemapImage (available in ImageMagick 6.4.3-6)</p>
1278
+ </div>
1279
+
1280
+ <div class="sig">
1281
+ <h3 id="resample">resample</h3>
1282
+
1283
+ <p><span class="arg">img</span>.resample(<span class=
1284
+ "arg">horizontal_res</span>=72.0[, <span class=
1285
+ "arg">vertical_res</span>]) -&gt; <em>image</em></p>
1286
+ </div>
1287
+
1288
+ <div class="desc">
1289
+ <h4>Description</h4>
1290
+
1291
+ <p class="imquote">Resample image to specified horizontal and
1292
+ vertical resolution.</p>
1293
+
1294
+ <p><span class="imquote">Resize the image so that its rendered
1295
+ size remains the same as the original at the specified target
1296
+ resolution. For example, if a 300 DPI image renders at 3 inches
1297
+ by 2 inches on a 300 DPI device, when the image has been
1298
+ resampled to 72 DPI, it will render at 3 inches by 2 inches on
1299
+ a 72 DPI device. Note that only a small number of image formats
1300
+ (e.g. JPEG, PNG, and TIFF) are capable of storing the image
1301
+ resolution. For formats which do not support an image
1302
+ resolution, the original resolution of the image must be
1303
+ specified via</span> the <a href=
1304
+ "imageattrs.html#density">density</a> attribute <span class=
1305
+ "imquote">prior to specifying the resample
1306
+ resolution.</span></p>
1307
+
1308
+ <h4>Arguments</h4>
1309
+
1310
+ <dl>
1311
+ <dt>horizontal_res</dt>
1312
+
1313
+ <dd>the target horizontal resolution. The default is
1314
+ 72.0.</dd>
1315
+
1316
+ <dt>vertical_res</dt>
1317
+
1318
+ <dd>the target vertical resolution. The default is
1319
+ <span class="arg">horizontal_res</span>.</dd>
1320
+ </dl>
1321
+ </div>
1322
+
1323
+ <div class="sig">
1324
+ <h3 id="resize">resize</h3>
1325
+
1326
+ <p><span class="arg">img</span>.resize(<span class=
1327
+ "arg">new_width</span>, <span class="arg">new_height</span>,
1328
+ <em>filter</em>=<a href=
1329
+ "constants.html#FilterTypes">LanczosFilter</a>,
1330
+ <em>support</em>=1.0) -&gt; <em>image</em><br />
1331
+ <span class="arg">img</span>.resize(<span class=
1332
+ "arg">scale_factor</span>) -&gt; <em>image</em></p>
1333
+ </div>
1334
+
1335
+ <div class="desc">
1336
+ <h4>Description</h4>
1337
+
1338
+ <p>Changes the size of the receiver to the specified
1339
+ dimensions.</p>
1340
+
1341
+ <h4>Arguments</h4>
1342
+
1343
+ <p>You can specify the new size in two ways. Either specify the
1344
+ new width and height explicitly, or specify a <em>scale
1345
+ factor</em>, a number that represents the percentage
1346
+ change.</p>
1347
+
1348
+ <p>Use the <a href=
1349
+ "image1.html#change_geometry">change_geometry</a> method to
1350
+ resize an image with constraints such as "maintain the current
1351
+ proportions."</p>
1352
+
1353
+ <dl>
1354
+ <dt>new_width, new_height</dt>
1355
+
1356
+ <dd>The desired width and height.</dd>
1357
+
1358
+ <dt>filter</dt>
1359
+
1360
+ <dd>The <a href="constants.html#FilterTypes">filter</a> to
1361
+ use when resizing. If you do not specify a filter argument,
1362
+ resize uses the value of the receiver's <a href=
1363
+ "imageattrs.html#Image.filter">filter attribute</a>.
1364
+ <span class="imquote">Most of the filters are FIR (finite
1365
+ impulse response), however, Bessel, Gaussian, and Sinc are
1366
+ IIR (infinite impulse response). Bessel and Sinc are windowed
1367
+ (brought down to zero) with the Blackman filter.</span></dd>
1368
+
1369
+ <dt>support</dt>
1370
+
1371
+ <dd>Values &gt; 1 increase the blurriness. Values &lt; 1
1372
+ increase the sharpness. If this argument is not specified,
1373
+ <code>resize</code> uses the value of the receiver's <a href=
1374
+ "imageattrs.html#Image.blur">blur</a> attribute.</dd>
1375
+
1376
+ <dt>scale_factor</dt>
1377
+
1378
+ <dd>You can use this argument instead of specifying the
1379
+ desired width and height. The percentage size change. For
1380
+ example, 1.25 makes the new image 125% of the size of the
1381
+ receiver. The scale factor 0.5 makes the new image 50% of the
1382
+ size of the receiver.</dd>
1383
+ </dl>
1384
+
1385
+ <h4>Returns</h4>
1386
+
1387
+ <p>A new image</p>
1388
+
1389
+ <h4>See also</h4>
1390
+
1391
+ <p><a href="image1.html#change_geometry">change_geometry</a>,
1392
+ <a href="#resize_bang">resize!</a>, <a href=
1393
+ "image2.html#magnify">magnify</a>, <a href=
1394
+ "image2.html#minify">minify</a>, <a href="#sample">sample</a>,
1395
+ <a href="#scale">scale</a>, <a href=
1396
+ "thumbnail">thumbnail</a></p>
1397
+
1398
+ <h4>Magick API</h4>
1399
+
1400
+ <p>ResizeImage</p>
1401
+ </div>
1402
+
1403
+ <div class="sig">
1404
+ <h3 id="resize_bang">resize!</h3>
1405
+
1406
+ <p><span class="arg">img</span>.resize!(<em>new_width</em>,
1407
+ <em>new_height</em>, <em>filter</em>=<a href=
1408
+ "constants.html#FilterTypes">LanczosFilter</a>,
1409
+ <em>support</em>=1.0) -&gt; <em>self</em><br />
1410
+ <span class="arg">img</span>.resize!(<span class=
1411
+ "arg">scale_factor</span>) -&gt; <em>self</em></p>
1412
+ </div>
1413
+
1414
+ <div class="desc">
1415
+ <h4>Description</h4>
1416
+
1417
+ <p>In-place form of <a href="#resize">resize</a>.</p>
1418
+
1419
+ <h4>Returns</h4>
1420
+
1421
+ <p>self</p>
1422
+ </div>
1423
+
1424
+ <div class="sig">
1425
+ <h3 id="resize_to_fill">resize_to_fill</h3>
1426
+
1427
+ <p><span class="arg">img</span>.resize_to_fill(<span class=
1428
+ "arg">width</span> [, <span class="arg">height</span> [,
1429
+ <span class="arg">gravity</span>=<code>CenterGravity</code>]])
1430
+ -&gt; <span class="arg">image</span></p>
1431
+ </div>
1432
+
1433
+ <div class="desc">
1434
+ <h4>Description</h4>
1435
+
1436
+ <p>A convenience method. Resize the image to fit within the
1437
+ specified dimensions while retaining the aspect ratio of the
1438
+ original image. If necessary, crop the image in the larger
1439
+ dimension.</p>
1440
+
1441
+ <h4>Arguments</h4>
1442
+
1443
+ <dl>
1444
+ <dt>width</dt>
1445
+
1446
+ <dd>The width of the resulting image in pixels</dd>
1447
+
1448
+ <dt>height</dt>
1449
+
1450
+ <dd>(Optional) The height of the resulting image in pixels.
1451
+ If omitted, defaults to <span class="arg">width</span>.</dd>
1452
+
1453
+ <dt>gravity</dt>
1454
+
1455
+ <dd>Use this argument to specify which portion of the image
1456
+ to retain when cropping. The value can be any <a href=
1457
+ "constants.html#GravityType">GravityType</a> value. The
1458
+ effect is the same as the <span class="arg">gravity</span>
1459
+ argument to the <a href=
1460
+ "image1.html#crop"><code>crop</code></a> method. The default
1461
+ is <code>CenterGravity</code>.</dd>
1462
+ </dl>
1463
+
1464
+ <h4>Returns</h4>
1465
+
1466
+ <p>A new image</p>
1467
+
1468
+ <h4>Example</h4>
1469
+
1470
+ <p>In this example, some rows have been cropped from the top
1471
+ and bottom to produce a square thumbnail from a rectangular
1472
+ image without distorting the image.</p>
1473
+
1474
+ <p class="rollover"><a href=
1475
+ "javascript:popup('resize_to_fill.rb.html')">
1476
+ <!-- This img tag displays the after image when the mouse is not over-->
1477
+ <img src="ex/resize_to_fill.jpg" style=
1478
+ "padding-left:62px; padding-right: 62px; padding-top: 87px;padding-bottom:87px;"
1479
+ id="after_resize_to_fill" onmouseover=
1480
+ "this.style.display='none'; before_resize_to_fill.style.display='';"
1481
+ alt="resize_to_fill example" />
1482
+ <!-- This img tag displays the before image when moused over -->
1483
+ <img src="ex/images/Flower_Hat.jpg" style="display: none" id=
1484
+ "before_resize_to_fill" onmouseout=
1485
+ "this.style.display='none'; after_resize_to_fill.style.display='';"
1486
+ alt="resize_to_fill example" title=
1487
+ "Click to see the example script" /></a> <img src=
1488
+ "ex/images/spin.gif" alt="" style="margin-bottom: 230px" title=
1489
+ "Mouse over the example to see the original image" /></p>
1490
+
1491
+ <h4>See also</h4>
1492
+
1493
+ <p><a href="image1.html#crop">crop</a>, <a href=
1494
+ "#resize">resize</a>, <a href=
1495
+ "#resize_to_fit">resize_to_fit</a></p>
1496
+
1497
+ <h4>Notes</h4>
1498
+
1499
+ <p><code>crop_resized</code> is an alias for this method.</p>
1500
+ </div>
1501
+
1502
+ <div class="sig">
1503
+ <h3 id="resize_to_fill_bang">resize_to_fill!</h3>
1504
+
1505
+ <p><span class="arg">img</span>.resize_to_fill!(<span class=
1506
+ "arg">width</span> [, <span class="arg">height</span> [,
1507
+ <span class="arg">gravity</span>=<code>CenterGravity</code>]])
1508
+ -&gt; <em>self</em></p>
1509
+ </div>
1510
+
1511
+ <div class="desc">
1512
+ <h4>Description</h4>The in-place form of <a href=
1513
+ "#resize_to_fill">resize_to_fill</a>.
1514
+
1515
+ <h4>Returns</h4>
1516
+
1517
+ <p>self</p>
1518
+
1519
+ <h4>See also</h4>
1520
+
1521
+ <p><a href="image1.html#crop_bang">crop!</a>, <a href=
1522
+ "#resize_bang">resize!</a>, <a href=
1523
+ "#resize_to_fit_bang">resize_to_fit!</a></p>
1524
+
1525
+ <h4>Notes</h4>
1526
+
1527
+ <p><code>crop_resized!</code> is an alias for this method.</p>
1528
+ </div>
1529
+
1530
+ <div class="sig">
1531
+ <h3 id="resize_to_fit">resize_to_fit</h3>
1532
+
1533
+ <p><span class="arg">img</span>.resize_to_fit(<span class=
1534
+ "arg">new_width</span> [, <span class="arg">new_height</span>])
1535
+ -&gt; <em>image</em></p>
1536
+ </div>
1537
+
1538
+ <div class="desc">
1539
+ <h4>Description</h4>
1540
+
1541
+ <p>A convenience method. Resize the image to fit within the
1542
+ specified dimensions while retaining the original aspect ratio.
1543
+ The image may be shorter or narrower than specified in the
1544
+ smaller dimension but will not be larger than the specified
1545
+ values.</p>
1546
+
1547
+ <h4>Arguments</h4>
1548
+
1549
+ <dl>
1550
+ <dt>new_width</dt>
1551
+
1552
+ <dd>The maximum width of the resized image.</dd>
1553
+
1554
+ <dt>new_height</dt>
1555
+
1556
+ <dd>(Optional) The maximum height of the resized image. If
1557
+ omitted it defaults to the value of <span class=
1558
+ "arg">new_width</span>.</dd>
1559
+ </dl>
1560
+
1561
+ <h4>Returns</h4>
1562
+
1563
+ <p>A new image</p>
1564
+
1565
+ <h4>Example</h4>
1566
+
1567
+ <p>Compare the result of this example to the result of the
1568
+ <a href="#resize_to_fill">resize_to_fill</a> example above.</p>
1569
+
1570
+ <p class="rollover"><a href=
1571
+ "javascript:popup('resize_to_fit.rb.html')">
1572
+ <!-- This img tag displays the original image when the mouse is over -->
1573
+ <img id="rtfless" style="display: none" onmouseout=
1574
+ "this.style.display='none';rtf.style.display='';" src=
1575
+ "ex/images/Flower_Hat.jpg" alt="resize_to_fit example" title=
1576
+ "Click to see the example script" />
1577
+ <!-- This img tag displays the framed image when the mouse is not over-->
1578
+ <img style=
1579
+ "padding-left:69px; padding-right: 69px; padding-top: 87px;padding-bottom:87px;"
1580
+ id="rtf" onmouseover=
1581
+ "this.style.display='none';rtfless.style.display='';" src=
1582
+ "ex/resize_to_fit.jpg" alt="resize_to_fit example" /></a>
1583
+ <img src="ex/images/spin.gif" alt="" style=
1584
+ "margin-bottom: 230px" title=
1585
+ "Mouse over the example to see the original image" /></p>
1586
+
1587
+ <h4>See also</h4>
1588
+
1589
+ <p><a href="#resize">resize</a>, <a href=
1590
+ "#resize_to_fill">resize_to_fill</a></p>
1591
+ </div>
1592
+
1593
+ <div class="sig">
1594
+ <h3 id="resize_to_fit_bang">resize_to_fit!</h3>
1595
+
1596
+ <p><span class="arg">img</span>.resize_to_fit!(<span class=
1597
+ "arg">new_width</span> [, <span class="arg">new_height</span>])
1598
+ -&gt; <em>self</em></p>
1599
+ </div>
1600
+
1601
+ <div class="desc">
1602
+ <h4>Description</h4>
1603
+
1604
+ <p>In-place form of <a href=
1605
+ "#resize_to_fit">resize_to_fit</a>.</p>
1606
+
1607
+ <h4>Returns</h4>
1608
+
1609
+ <p>self</p>
1610
+
1611
+ <h4>See also</h4>
1612
+
1613
+ <p><a href="#resize_bang">resize!</a>, <a href=
1614
+ "#resize_to_fill_bang">resize_to_fill!</a></p>
1615
+ </div>
1616
+
1617
+ <div class="sig">
1618
+ <h3 id="roll">roll</h3>
1619
+
1620
+ <p><span class="arg">img</span>.roll(<span class=
1621
+ "arg">x_offset</span>, <span class="arg">y_offset</span>) -&gt;
1622
+ <em>image</em></p>
1623
+ </div>
1624
+
1625
+ <div class="desc">
1626
+ <h4>Description</h4>
1627
+
1628
+ <p class="imquote">Offsets an image as defined by <span class=
1629
+ "arg">x_offset</span> and <span class=
1630
+ "arg">y_offset</span>.</p>
1631
+
1632
+ <h4>Arguments</h4>
1633
+
1634
+ <dl>
1635
+ <dt>x_offset</dt>
1636
+
1637
+ <dd>The number of columns to offset the image.</dd>
1638
+
1639
+ <dt>y_offset</dt>
1640
+
1641
+ <dd>The number of rows to offset the image.</dd>
1642
+ </dl>
1643
+
1644
+ <h4>Returns</h4>
1645
+
1646
+ <p>A new image</p>
1647
+
1648
+ <h4>Example</h4>
1649
+
1650
+ <p>This image has been offset 25% in both directions.</p>
1651
+
1652
+ <p class="rollover"><a href=
1653
+ "javascript:popup('roll.rb.html')"><img src="ex/roll.jpg"
1654
+ title="Click to see the example script" alt="roll example"
1655
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1656
+ "this.src='ex/roll.jpg'" /></a><img src="ex/images/spin.gif"
1657
+ alt="" class="spin" title=
1658
+ "Mouse over the example to see the original image" /></p>
1659
+
1660
+ <h4>Magick API</h4>
1661
+
1662
+ <p>RollImage</p>
1663
+ </div>
1664
+
1665
+ <div class="sig">
1666
+ <h3 id="rotate">rotate</h3>
1667
+
1668
+ <p><span class="arg">img</span>.rotate(<span class=
1669
+ "arg">amount</span> [, <span class="arg">qualifier</span>])
1670
+ -&gt; <em>image</em></p>
1671
+ </div>
1672
+
1673
+ <div class="desc">
1674
+ <h4>Description</h4>
1675
+
1676
+ <p>Rotate the receiver by the specified angle. Positive angles
1677
+ rotate clockwise while negative angles rotate
1678
+ counter-clockwise. New pixels introduced by the rotation are
1679
+ the same color as the current <a href=
1680
+ "imageattrs.html#background_color">background color</a>. Set
1681
+ the background color to "none" to make the new pixels
1682
+ transparent black.</p>
1683
+
1684
+ <h4>Arguments</h4>
1685
+
1686
+ <dl>
1687
+ <dt>amount</dt>
1688
+
1689
+ <dd>The number of degrees to rotate the image.</dd>
1690
+
1691
+ <dt>qualifier</dt>
1692
+
1693
+ <dd>If present, either "&gt;" or "&lt;". If "&gt;", rotates
1694
+ the image only if the image's width exceeds its height. If
1695
+ "&lt;" rotates the image only if its height exceeds its
1696
+ width. If this argument is omitted the image is always
1697
+ rotated.</dd>
1698
+ </dl>
1699
+
1700
+ <h4>Returns</h4>
1701
+
1702
+ <p>A new image, or <code>nil</code> if the image was not
1703
+ rotated because it did not meet the qualification specified by
1704
+ the second argument.</p>
1705
+
1706
+ <h4>Example</h4>
1707
+
1708
+ <p class="rollover"><a href=
1709
+ "javascript:popup('rotate_f.rb.html')"><!--
1710
+ This img tag displays the original image when the mouse is over.
1711
+ Use CSS to add padding around the image to make it occupy the
1712
+ same space as the rotated image. --><img style="padding-top:34px;padding-bottom:34px; display:none"
1713
+ id="notrotated" onmouseout=
1714
+ "this.style.display='none'; rotated.style.display='';" src=
1715
+ "ex/images/Flower_Hat.jpg" alt="rotate example" title=
1716
+ "Click to see the example script" /><!--
1717
+ This img tag displays the rotated image.
1718
+ --><img class="hide"
1719
+ id="rotated" onmouseover=
1720
+ "this.style.display='none'; notrotated.style.display='';" src=
1721
+ "ex/rotate_f.jpg" alt="rotate example" /></a> <img src=
1722
+ "ex/images/spin.gif" alt="" class="spin" style="left:322px;"
1723
+ title="Mouse over the example to see the original image" /></p>
1724
+
1725
+ <h4>See also</h4>
1726
+
1727
+ <p><a href="image1.html#affine_transform">affine_transform</a>,
1728
+ <a href="#shear">shear</a></p>
1729
+
1730
+ <h4>Magick API</h4>
1731
+
1732
+ <p>RotateImage</p>
1733
+ </div>
1734
+
1735
+ <div class="sig">
1736
+ <h3 id="rotate_bang">rotate!</h3>
1737
+
1738
+ <p><span class="arg">img</span>.rotate!(<span class=
1739
+ "arg">amount</span> [, <span class="arg">qualifier</span>])
1740
+ -&gt; <em>self</em></p>
1741
+ </div>
1742
+
1743
+ <div class="desc">
1744
+ <h4>Description</h4>
1745
+
1746
+ <p>In-place form of <a href="#rotate">rotate</a>.</p>
1747
+
1748
+ <h4>Returns</h4>
1749
+
1750
+ <p>self, or <code>nil</code> if the image was not rotated
1751
+ because it did not meet the qualification specified by the
1752
+ second argument.</p>
1753
+ </div>
1754
+
1755
+ <div class="sig">
1756
+ <h3 id="sample">sample</h3>
1757
+
1758
+ <p><span class="arg">img</span>.sample(<span class=
1759
+ "arg">new_width</span>, <span class="arg">new_height</span>)
1760
+ -&gt; <span class="arg">image</span><br />
1761
+ <span class="arg">img</span>.sample(<span class=
1762
+ "arg">scale_factor</span>) -&gt; <em>image</em></p>
1763
+ </div>
1764
+
1765
+ <div class="desc">
1766
+ <h4>Description</h4>
1767
+
1768
+ <p>Scales an image to the desired dimensions with pixel
1769
+ sampling. Unlike other scaling methods, this method does not
1770
+ introduce any additional color into the scaled image.</p>
1771
+
1772
+ <h4>Arguments</h4>
1773
+
1774
+ <dl>
1775
+ <dt>new_width, new_height</dt>
1776
+
1777
+ <dd>The desired width and height.</dd>
1778
+
1779
+ <dt>scale_factor</dt>
1780
+
1781
+ <dd>You can use this argument instead of specifying the
1782
+ desired width and height. The percentage size change. For
1783
+ example, 1.25 makes the new image 125% of the size of the
1784
+ receiver. The scale factor 0.5 makes the new image 50% of the
1785
+ size of the receiver.</dd>
1786
+ </dl>
1787
+
1788
+ <h4>Returns</h4>
1789
+
1790
+ <p>A new image</p>
1791
+
1792
+ <h4>See also</h4>
1793
+
1794
+ <p><a href="#sample_bang">sample!</a>, <a href=
1795
+ "image2.html#magnify">magnify</a>, <a href=
1796
+ "image2.html#minify">minify</a>, <a href="#resize">resize</a>,
1797
+ <a href="#scale">scale</a>, <a href=
1798
+ "#thumbnail">thumbnail</a></p>
1799
+
1800
+ <h4>Magick API</h4>
1801
+
1802
+ <p>SampleImage</p>
1803
+ </div>
1804
+
1805
+ <div class="sig">
1806
+ <h3 id="sample_bang">sample!</h3>
1807
+
1808
+ <p><span class="arg">img</span>.sample!(<span class=
1809
+ "arg">new_width</span>, <span class="arg">new_height</span>)
1810
+ -&gt; <em>self</em><br />
1811
+ <span class="arg">img</span>.sample!(<span class=
1812
+ "arg">scale_factor</span>) -&gt; <em>self</em></p>
1813
+ </div>
1814
+
1815
+ <div class="desc">
1816
+ <h4>Description</h4>
1817
+
1818
+ <p>In-place form of <a href="#sample">sample</a>.</p>
1819
+
1820
+ <h4>Returns</h4>
1821
+
1822
+ <p>self</p>
1823
+ </div>
1824
+
1825
+ <div class="sig">
1826
+ <h3 id="scale">scale</h3>
1827
+
1828
+ <p><span class="arg">img</span>.scale(<span class=
1829
+ "arg">new_width</span>, <span class="arg">new_height</span>)
1830
+ -&gt; <em>image</em><br />
1831
+ <span class="arg">img</span>.scale(<span class=
1832
+ "arg">scale_factor</span>) -&gt; <em>image</em></p>
1833
+ </div>
1834
+
1835
+ <div class="desc">
1836
+ <h4>Description</h4>
1837
+
1838
+ <p class="imquote">Changes the size of an image to the given
1839
+ dimensions.</p>
1840
+
1841
+ <h4>Arguments</h4>
1842
+
1843
+ <dl>
1844
+ <dt>new_width, new_height</dt>
1845
+
1846
+ <dd>The desired width and height.</dd>
1847
+
1848
+ <dt>scale_factor</dt>
1849
+
1850
+ <dd>You can use this argument instead of specifying the
1851
+ desired width and height. The percentage size change. For
1852
+ example, 1.25 makes the new image 125% of the size of the
1853
+ receiver. The scale factor 0.5 makes the new image 50% of the
1854
+ size of the receiver.</dd>
1855
+ </dl>
1856
+
1857
+ <h4>Returns</h4>
1858
+
1859
+ <p>A new image</p>
1860
+
1861
+ <h4>See also</h4>
1862
+
1863
+ <p><a href="#scale_bang">scale!</a>, <a href=
1864
+ "image2.html#magnify">magnify</a>, <a href=
1865
+ "image2.html#minify">minify</a>, <a href="#resize">resize</a>,
1866
+ <a href="#sample">sample</a>, <a href=
1867
+ "#thumbnail">thumbnail</a></p>
1868
+
1869
+ <h4>Magick API</h4>
1870
+
1871
+ <p>ScaleImage</p>
1872
+ </div>
1873
+
1874
+ <div class="sig">
1875
+ <h3 id="scale_bang">scale!</h3>
1876
+
1877
+ <p><span class="arg">img</span>.scale!(<span class=
1878
+ "arg">new_width</span>, <span class="arg">new_height</span>)
1879
+ -&gt; <em>self</em><br />
1880
+ <span class="arg">img</span>.scale!(<span class=
1881
+ "arg">scale_factor</span>) -&gt; <em>self</em></p>
1882
+ </div>
1883
+
1884
+ <div class="desc">
1885
+ <h4>Description</h4>
1886
+
1887
+ <p>In-place form of <a href="#scale">scale</a>.</p>
1888
+
1889
+ <h4>Returns</h4>
1890
+
1891
+ <p>self</p>
1892
+ </div>
1893
+
1894
+ <div class="sig">
1895
+ <h3 id="segment">segment</h3>
1896
+
1897
+ <p><span class="arg">img</span>.segment(<span class=
1898
+ "arg">colorspace</span>=RGBColorspace, <span class=
1899
+ "arg">cluster_threshold</span>=1.0, <span class=
1900
+ "arg">smoothing_threshold</span>=1.5, <span class=
1901
+ "arg">verbose</span>=<code>false</code>) -&gt;
1902
+ <em>image</em></p>
1903
+ </div>
1904
+
1905
+ <div class="desc">
1906
+ <h4>Description</h4>
1907
+
1908
+ <p class="imquote">Segments an image by analyzing the
1909
+ histograms of the color components and identifying units that
1910
+ are homogeneous with the fuzzy c-means technique.</p>
1911
+
1912
+ <h4>Arguments</h4>
1913
+
1914
+ <dl>
1915
+ <dt>colorspace</dt>
1916
+
1917
+ <dd>A <a href=
1918
+ "constants.html#ColorspaceType"><code>ColorspaceType</code></a>
1919
+ value. <span class="imquote">Empirical evidence suggests that
1920
+ distances in YUV or YIQ correspond to perceptual color
1921
+ differences more closely than do distances in RGB space. The
1922
+ image is then returned to RGB colorspace after color
1923
+ reduction.</span></dd>
1924
+
1925
+ <dt>cluster_threshold</dt>
1926
+
1927
+ <dd class="imquote">The number of pixels in each cluster must
1928
+ exceed the the cluster threshold to be considered valid.</dd>
1929
+
1930
+ <dt>smoothing_threshold</dt>
1931
+
1932
+ <dd>The <span class="imquote">smoothing threshold eliminates
1933
+ noise in the second derivative of the histogram. As the value
1934
+ is increased, you can expect a smoother second
1935
+ derivative.</span></dd>
1936
+
1937
+ <dt>verbose</dt>
1938
+
1939
+ <dd>If <code>true</code>, <code>segment</code> prints
1940
+ detailed information about the identified classes.</dd>
1941
+ </dl>
1942
+
1943
+ <h4>Returns</h4>
1944
+
1945
+ <p>A new image</p>
1946
+
1947
+ <h4>Example</h4>
1948
+
1949
+ <p><code>segment(YUVColorspace, 0.4, 0.4)</code></p>
1950
+
1951
+ <p class="rollover"><a href=
1952
+ "javascript:popup('segment.rb.html')"><img src="ex/segment.jpg"
1953
+ alt="segment example" title="Click to see the example script"
1954
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
1955
+ "this.src='ex/segment.jpg'" /></a> <img src=
1956
+ "ex/images/spin.gif" alt="" class="spin" title=
1957
+ "Mouse over the example to see the original image" /></p>
1958
+
1959
+ <h4>Magick API</h4>
1960
+
1961
+ <p>SegmentImage</p>
1962
+ </div>
1963
+
1964
+ <div class="sig">
1965
+ <h3 id="selective_blur_channel">selective_blur_channel</h3>
1966
+
1967
+ <p><span class=
1968
+ "arg">img</span>.selective_blur_channel(<span class=
1969
+ "arg">radius</span>, <span class="arg">sigma</span>,
1970
+ <span class="arg">threshold</span>[, <span class=
1971
+ "arg">channel</span>...]) -&gt; <em>image</em></p>
1972
+ </div>
1973
+
1974
+ <div class="desc">
1975
+ <h4>Description</h4>
1976
+
1977
+ <p class="imquote">Selectively blur pixels within a contrast
1978
+ threshold.</p>
1979
+
1980
+ <h4>Arguments</h4>
1981
+
1982
+ <dl>
1983
+ <dt>radius, sigma</dt>
1984
+
1985
+ <dd class="imquote">Use a Gaussian operator of the given
1986
+ radius and standard deviation (sigma).</dd>
1987
+
1988
+ <dt>threshold</dt>
1989
+
1990
+ <dd>Threshold level represented as a percentage of the
1991
+ quantum range. Either a floating-point number or a string in
1992
+ the form "NN%".</dd>
1993
+
1994
+ <dt>channel...</dt>
1995
+
1996
+ <dd>The channels to blur. 0 or more <a href=
1997
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
1998
+ channels are specified, the default is the red, green, and
1999
+ blue channels.</dd>
2000
+ </dl>
2001
+
2002
+ <h4>Returns</h4>
2003
+
2004
+ <p>A new image</p>
2005
+
2006
+ <h4>Example</h4>
2007
+ <pre>
2008
+ img2 = img.selective_blur_channel(0, 1, '10%')
2009
+ </pre>
2010
+
2011
+ <h4>See also</h4>
2012
+
2013
+ <p><a href="image1.html#blur_channel">blur_channel</a>,
2014
+ <a href="image1.html#blur_image">blur_image</a>, <a href=
2015
+ "image2.html#gaussian_blur_channel">gaussian_blur_channel</a>,
2016
+ <a href="image2.html#motion_blur">motion_blur</a>, <a href=
2017
+ "#radial_blur">radial_blur</a></p>
2018
+
2019
+ <h4>Magick API</h4>
2020
+
2021
+ <p>SelectiveBlurImageChannel (available in ImageMagick
2022
+ 6.5.0-3)</p>
2023
+ </div>
2024
+
2025
+ <div class="sig">
2026
+ <h3 id="separate">separate</h3>
2027
+
2028
+ <p>Image.separate(<span class="arg">channel</span>...) -&gt;
2029
+ <em>imagelist</em></p>
2030
+ </div>
2031
+
2032
+ <div class="desc">
2033
+ <h4>Description</h4>
2034
+
2035
+ <p>Constructs a grayscale image for each channel specified.</p>
2036
+
2037
+ <h4>Arguments</h4>
2038
+
2039
+ <p>0 or more <a href=
2040
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
2041
+ channels are specified, constructs an image for each of the
2042
+ red, green, and blue channels.</p>
2043
+
2044
+ <h4>Returns</h4>
2045
+
2046
+ <p>A new imagelist containing the new images.</p>
2047
+
2048
+ <h4>See also</h4>
2049
+
2050
+ <p><a href="image1.html#channel">channel</a></p>
2051
+
2052
+ <h4>Notes</h4>
2053
+
2054
+ <p>If the image does not have an opacity channel an
2055
+ OpacityChannel argument is ignored.</p>
2056
+
2057
+ <h4>Magick API</h4>
2058
+
2059
+ <p>SeparateImages</p>
2060
+ </div>
2061
+
2062
+ <div class="sig">
2063
+ <h3 id="sepiatone">sepiatone</h3>
2064
+
2065
+ <p><span class="arg">img</span>.sepiatone(<span class=
2066
+ "arg">threshold</span>=QuantumRange) -&gt; <span class=
2067
+ "arg">image</span></p>
2068
+ </div>
2069
+
2070
+ <div class="desc">
2071
+ <h4>Description</h4>
2072
+
2073
+ <p class="imquote">Applies a special effect to the image,
2074
+ similar to the effect achieved in a photo darkroom by sepia
2075
+ toning.</p>
2076
+
2077
+ <h4>Arguments</h4>
2078
+
2079
+ <dl>
2080
+ <dt>threshold</dt>
2081
+
2082
+ <dd class="imquote"><span class="arg">Threshold</span> ranges
2083
+ from 0 to QuantumRange and is a measure of the extent of the
2084
+ sepia toning. A threshold of 80% is a good starting point for
2085
+ a reasonable tone. The default is QuantumRange.</dd>
2086
+ </dl>
2087
+
2088
+ <h4>Returns</h4>
2089
+
2090
+ <p>A new image.</p>
2091
+
2092
+ <h4>Example</h4>
2093
+
2094
+ <p class="rollover"><a href=
2095
+ "javascript:popup('sepiatone.rb.html')"><img src=
2096
+ "ex/sepiatone.jpg" alt="sepiatone example" onmouseover=
2097
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2098
+ "this.src='ex/sepiatone.jpg'" title=
2099
+ "Click to see the example script" /></a> <img src=
2100
+ "ex/images/spin.gif" alt="" class="spin" title=
2101
+ "Mouse over the example to see the original image" /></p>
2102
+
2103
+ <h4>See also</h4>
2104
+
2105
+ <p>You can get more control by using <a href=
2106
+ "image1.html#colorize">colorize</a>.</p>
2107
+
2108
+ <h4>Magick API</h4>
2109
+
2110
+ <p>SepiaToneImage</p>
2111
+ </div>
2112
+
2113
+ <div class="sig">
2114
+ <h3 id="set_channel_depth">set_channel_depth</h3>
2115
+
2116
+ <p><span class="arg">img.</span>set_channel_depth(<span class=
2117
+ "arg">channel</span>, <span class="arg">depth</span>) -&gt;
2118
+ <em>self</em></p>
2119
+ </div>
2120
+
2121
+ <div class="desc">
2122
+ <h4>Description</h4>
2123
+
2124
+ <p>Sets the depth of the image channel.</p>
2125
+
2126
+ <h4>Arguments</h4>
2127
+
2128
+ <dl>
2129
+ <dt>channel</dt>
2130
+
2131
+ <dd>A <a href="constants.html#ChannelType">ChannelType</a>
2132
+ value</dd>
2133
+
2134
+ <dt>depth</dt>
2135
+
2136
+ <dd>The desired depth (must be no greater than <a href=
2137
+ "constants.html">QuantumDepth</a>)</dd>
2138
+ </dl>
2139
+
2140
+ <h4>Returns</h4>
2141
+
2142
+ <p>self</p>
2143
+
2144
+ <h4>See also</h4>
2145
+
2146
+ <p><a href="image1.html#channel_depth">channel_depth</a></p>
2147
+
2148
+ <h4>Magick API</h4>
2149
+
2150
+ <p>SetImageChannelDepth</p>
2151
+ </div>
2152
+
2153
+ <div class="sig">
2154
+ <h3 id="shade">shade</h3>
2155
+
2156
+ <p><span class="arg">img</span>.shade(<span class=
2157
+ "arg">shading</span>=<code>false</code>, <span class=
2158
+ "arg">azimuth</span>=30, <span class="arg">elevation</span>=30)
2159
+ -&gt; <em>image</em></p>
2160
+ </div>
2161
+
2162
+ <div class="desc">
2163
+ <h4>Description</h4>
2164
+
2165
+ <p class="imquote">Shines a distant light on an image to create
2166
+ a three-dimensional effect. You control the positioning of the
2167
+ light with <span class="arg">azimuth</span> and <span class=
2168
+ "arg">elevation</span>; <span class="arg">azimuth</span> is
2169
+ measured in degrees off the x axis and <span class=
2170
+ "arg">elevation</span> is measured in pixels above the Z
2171
+ axis.</p>
2172
+
2173
+ <h4>Arguments</h4>
2174
+
2175
+ <dl>
2176
+ <dt>shading</dt>
2177
+
2178
+ <dd>If <code>true</code>, <code>shade</code> shades the
2179
+ intensity of each pixel.</dd>
2180
+
2181
+ <dt>azimuth, elevation</dt>
2182
+
2183
+ <dd>The light source direction. The azimuth is measured in
2184
+ degrees. 0&deg; is at 9 o'clock. Increasing values move the
2185
+ light source counter-clockwise.</dd>
2186
+ </dl>
2187
+
2188
+ <h4>Returns</h4>
2189
+
2190
+ <p>A new image</p>
2191
+
2192
+ <h4>Example</h4>
2193
+
2194
+ <p><code>shade(true, 50, 50)</code></p>
2195
+
2196
+ <p class="rollover"><a href=
2197
+ "javascript:popup('shade.rb.html')"><img src="ex/shade.jpg"
2198
+ alt="shade example" onmouseover=
2199
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2200
+ "this.src='ex/shade.jpg'" title=
2201
+ "Click to see the example script" /></a> <img src=
2202
+ "ex/images/spin.gif" alt="" class="spin" title=
2203
+ "Mouse over the example to see the original image" /></p>
2204
+
2205
+ <h4>Magick API</h4>
2206
+
2207
+ <p>ShadeImage</p>
2208
+ </div>
2209
+
2210
+ <div class="sig">
2211
+ <h3 id="shadow">shadow</h3>
2212
+
2213
+ <p><span class="arg">img</span>.shadow(<span class=
2214
+ "arg">x_offset=4</span>, <span class="arg">y_offset=4</span>,
2215
+ <span class="arg">sigma=4.0</span>, <span class=
2216
+ "arg">opacity=1.0</span>) -&gt; <em>image</em></p>
2217
+ </div>
2218
+
2219
+ <div class="desc">
2220
+ <h4>Description</h4>Draws the shadow of opaque parts of the
2221
+ image. This method only works when the image has opaque parts
2222
+ and transparent parts. Note that the resulting image is just
2223
+ the shadow. You must composite the original image over the
2224
+ shadow to produce the shadowed results.
2225
+
2226
+ <h4>Arguments</h4>
2227
+
2228
+ <dl>
2229
+ <dt>x_offset</dt>
2230
+
2231
+ <dd>The shadow x-offset</dd>
2232
+
2233
+ <dt>y_offset</dt>
2234
+
2235
+ <dd>The shadow y-offset</dd>
2236
+
2237
+ <dt>sigma</dt>
2238
+
2239
+ <dd>The standard deviation of the Gaussian operator used to
2240
+ produce the shadow. The higher the number, the "blurrier" the
2241
+ shadow, but the longer it takes to produce the shadow. Must
2242
+ be &gt; 0.0.</dd>
2243
+
2244
+ <dt>opacity</dt>
2245
+
2246
+ <dd>The percent opacity of the shadow. May be either a number
2247
+ between 0.1 and 1.0, or a string in the form "NN%" between
2248
+ "1%" and "100%". If the percentage is greater than 100 it is
2249
+ reduced to 100.</dd>
2250
+ </dl>
2251
+
2252
+ <h4>Returns</h4>
2253
+
2254
+ <p>A new image</p>
2255
+
2256
+ <h4>Example</h4>
2257
+
2258
+ <p class="rollover"><a href=
2259
+ "javascript:popup('shadow.rb.html')">
2260
+ <!-- This img tag displays the original image when the mouse is over -->
2261
+ <img style="padding:8px; display:none" id="shadowless"
2262
+ onmouseout=
2263
+ "this.style.display='none';shadowed.style.display='';" src=
2264
+ "ex/shadow_before.gif" alt="shadow example" title=
2265
+ "Click to see the example script" /><!--
2266
+ This img tag displays the shadowed image when the mouse is not over
2267
+ --><img class="hide"
2268
+ id="shadowed" onmouseover=
2269
+ "this.style.display='none';shadowless.style.display='';" src=
2270
+ "ex/shadow_after.gif" alt="shadow example" /></a> <img src=
2271
+ "ex/images/spin.gif" alt="" style="margin-bottom: 120px" title=
2272
+ "Mouse over the example to see the original image" /></p>
2273
+
2274
+ <h4>Magick API</h4>
2275
+
2276
+ <p>ShadowImage</p>
2277
+
2278
+ <h4>Notes</h4>
2279
+
2280
+ <p>The shadow image is 2&times;<span class="arg">sigma</span>
2281
+ pixels larger on a side than the original image, as can be seen
2282
+ in the example above.</p>
2283
+ </div>
2284
+
2285
+ <div class="sig">
2286
+ <h3 id="sharpen">sharpen</h3>
2287
+
2288
+ <p><span class="arg">img</span>.sharpen(<span class=
2289
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=1.0)
2290
+ -&gt; <em>image</em></p>
2291
+ </div>
2292
+
2293
+ <div class="desc">
2294
+ <h4>Description</h4>
2295
+
2296
+ <p class="imquote">Sharpens an image. We convolve the image
2297
+ with a Gaussian operator of the given <span class=
2298
+ "arg">radius</span> and standard deviation (<span class=
2299
+ "arg">sigma</span>). For reasonable results, <span class=
2300
+ "arg">radius</span> should be larger than <span class=
2301
+ "arg">sigma</span>. Use a radius of 0 and <code>sharpen</code>
2302
+ selects a suitable radius for you.</p>
2303
+
2304
+ <h4>Arguments</h4>
2305
+
2306
+ <p>The radius and standard deviation of the Gaussian
2307
+ operator.</p>
2308
+
2309
+ <h4>Returns</h4>
2310
+
2311
+ <p>A new image</p>
2312
+
2313
+ <h4>Magick API</h4>
2314
+
2315
+ <p>SharpenImage</p>
2316
+
2317
+ <h4>See also</h4>
2318
+
2319
+ <p><a href=
2320
+ "imageattrs.html#virtual_pixel_method">virtual_pixel_method</a></p>
2321
+ </div>
2322
+
2323
+ <div class="sig">
2324
+ <h3 id="sharpen_channel">sharpen_channel</h3>
2325
+
2326
+ <p><span class="arg">img</span>.sharpen_channel( <span class=
2327
+ "arg">radius</span>, <span class="arg">sigma</span>
2328
+ [,<span class="arg">channel</span>...] ) -&gt;
2329
+ <em>image</em></p>
2330
+ </div>
2331
+
2332
+ <div class="desc">
2333
+ <h4>Description</h4>
2334
+
2335
+ <p class="imquote">Sharpens one or more image channels. We
2336
+ convolve the image with a Gaussian operator of the given radius
2337
+ and standard deviation (<span class="arg">sigma</span>) . For
2338
+ reasonable results, <span class="arg">radius</span> should be
2339
+ larger than <span class="arg">sigma</span>. Use a radius of 0
2340
+ and <code>sharpen_channel</code> selects a suitable radius for
2341
+ you.</p>
2342
+
2343
+ <h4>Arguments</h4>
2344
+
2345
+ <dl>
2346
+ <dt>radius, sigma</dt>
2347
+
2348
+ <dd>The radius and standard deviation of the Gaussian
2349
+ operator.</dd>
2350
+
2351
+ <dt>channel...</dt>
2352
+
2353
+ <dd>0 or more <a href=
2354
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
2355
+ channels are specified, all the channels are sharpened.</dd>
2356
+ </dl>
2357
+
2358
+ <h4>Returns</h4>
2359
+
2360
+ <p>A new image</p>
2361
+
2362
+ <h4>See also</h4>
2363
+
2364
+ <p><a href="#sharpen">sharpen</a></p>
2365
+
2366
+ <h4>Magick API</h4>
2367
+
2368
+ <p>SharpenImageChannel</p>
2369
+ </div>
2370
+
2371
+ <div class="sig">
2372
+ <h3 id="shave">shave</h3>
2373
+
2374
+ <p><span class="arg">img</span>.shave(<span class=
2375
+ "arg">width</span>, <span class="arg">height</span>) -&gt;
2376
+ <em>image</em></p>
2377
+ </div>
2378
+
2379
+ <div class="desc">
2380
+ <h4>Description</h4>
2381
+
2382
+ <p>Removes pixels from the edges of the image, leaving the
2383
+ center rectangle.</p>
2384
+
2385
+ <h4>Arguments</h4>
2386
+
2387
+ <dl>
2388
+ <dt>width</dt>
2389
+
2390
+ <dd>The number of pixels to remove from each side of the
2391
+ receiver, not to exceed half the original width.</dd>
2392
+
2393
+ <dt>height</dt>
2394
+
2395
+ <dd>The number of pixels to remove from the top and bottom of
2396
+ the receiver, not to exceed half the original height.</dd>
2397
+ </dl>
2398
+
2399
+ <h4>Returns</h4>
2400
+
2401
+ <p>A new image</p>
2402
+
2403
+ <h4>Example</h4>
2404
+
2405
+ <p class="rollover"><a href=
2406
+ "javascript:popup('shave.rb.html')"><img src="ex/shave.jpg"
2407
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2408
+ "this.src='ex/shave.jpg'" alt="shave example" title=
2409
+ "Click to see the example script" /></a> <img src=
2410
+ "ex/images/spin.gif" alt="" class="spin" title=
2411
+ "Mouse over the example to see the original image" /></p>
2412
+
2413
+ <h4>See also</h4>
2414
+
2415
+ <p><a href="#shave_bang">shave!</a>, <a href=
2416
+ "image1.html#crop">crop</a></p>
2417
+
2418
+ <h4>Magick API</h4>
2419
+
2420
+ <p>ShaveImage</p>
2421
+ </div>
2422
+
2423
+ <div class="sig">
2424
+ <h3 id="shave_bang">shave!</h3>
2425
+
2426
+ <p><span class="arg">img</span>.shave!(<span class=
2427
+ "arg">width</span>, <span class="arg">height</span>) -&gt;
2428
+ <em>self</em></p>
2429
+ </div>
2430
+
2431
+ <div class="desc">
2432
+ <h4>Description</h4>
2433
+
2434
+ <p>In-place form of <a href="#shave">shave</a>.</p>
2435
+
2436
+ <h4>Returns</h4>
2437
+
2438
+ <p>self</p>
2439
+ </div>
2440
+
2441
+ <div class="sig">
2442
+ <h3 id="shear">shear</h3>
2443
+
2444
+ <p><span class="arg">img</span>.shear(<span class=
2445
+ "arg">x_shear</span>, <span class="arg">y_shear</span>) -&gt;
2446
+ <em>image</em></p>
2447
+ </div>
2448
+
2449
+ <div class="desc">
2450
+ <h4>Description</h4>
2451
+
2452
+ <p class="imquote">Shearing slides one edge of an image along
2453
+ the X or Y axis, creating a parallelogram. An X direction shear
2454
+ slides an edge along the X axis, while a Y direction shear
2455
+ slides an edge along the Y axis. The amount of the shear is
2456
+ controlled by a shear angle. For X direction shears,
2457
+ <span class="arg">x_shear</span> is measured relative to the Y
2458
+ axis, and similarly, for Y direction shears <span class=
2459
+ "arg">y_shear</span> is measured relative to the X axis. Empty
2460
+ triangles left over from shearing the image are filled with the
2461
+ background color.</p>
2462
+
2463
+ <h4>Arguments</h4>
2464
+
2465
+ <p>The X and Y shear angles, measured in degrees. These values
2466
+ must not be 180.0. If either value is 0, no shearing will
2467
+ occur.</p>
2468
+
2469
+ <h4>Returns</h4>
2470
+
2471
+ <p>A new image</p>
2472
+
2473
+ <h4>Example</h4>
2474
+
2475
+ <p class="rollover"><a href=
2476
+ "javascript:popup('shear.rb.html')"><!--
2477
+ This img tag displays the original image when the mouse is over
2478
+ --><img style="padding-top:34px; padding-bottom:33px; padding-left:49px; padding-right:49px; display:none"
2479
+ id="noshear" onmouseout=
2480
+ "this.style.display='none'; sheared.style.display='';" src=
2481
+ "ex/images/Flower_Hat.jpg" alt="shear example" title=
2482
+ "Click to see the example script" /> <!--
2483
+ This img tag displays the sheared image when the mouse is not over
2484
+ -->
2485
+ <img id="sheared" onmouseover=
2486
+ "this.style.display='none'; noshear.style.display='';" src=
2487
+ "ex/shear.jpg" alt="shear example" /></a><img src=
2488
+ "ex/images/spin.gif" alt="" class="spin" style=
2489
+ "left: 253px; top: 34px" title=
2490
+ "Mouse over the example to see the original image" /></p>
2491
+
2492
+ <h4>See also</h4>
2493
+
2494
+ <p><a href="image1.html#affine_transform">affine_transform</a>,
2495
+ <a href="#rotate">rotate</a></p>
2496
+
2497
+ <h4>Magick API</h4>
2498
+
2499
+ <p>ShearImage</p>
2500
+ </div>
2501
+
2502
+ <div class="sig">
2503
+ <h3 id="sigmoidal_contrast_channel">
2504
+ sigmoidal_contrast_channel</h3>
2505
+
2506
+ <p><br />
2507
+ <span class=
2508
+ "arg">img</span>.sigmoidal_contrast_channel(<span class=
2509
+ "arg">contrast</span>=3.0, <span class=
2510
+ "arg">midpoint</span>=50.0, <span class=
2511
+ "arg">sharpen</span>=false[,<span class=
2512
+ "arg">channel</span>...]) -&gt; <em>image</em></p>
2513
+ </div>
2514
+
2515
+ <div class="desc">
2516
+ <h4>Description</h4>
2517
+
2518
+ <p class="imquote">Adjusts the contrast of an image channel
2519
+ with a non-linear sigmoidal contrast algorithm. Increases the
2520
+ contrast of the image using a sigmoidal transfer function
2521
+ without saturating highlights or shadows.</p>
2522
+
2523
+ <h4>Arguments</h4>
2524
+
2525
+ <dl>
2526
+ <dt>contrast</dt>
2527
+
2528
+ <dd class="imquote">indicates how much to increase the
2529
+ contrast (0 is none; 3 is typical; 20 is pushing it)</dd>
2530
+
2531
+ <dt>midpoint</dt>
2532
+
2533
+ <dd><span class="imquote">indicates where midtones fall in
2534
+ the resultant image (0 is white; 50% is middle-gray; 100% is
2535
+ black).</span> Note that "50%" means "50% of the quantum
2536
+ range." This argument is a number between 0 and QuantumRange.
2537
+ To specify "50%" use <code>QuantumRange * 0.50</code>.</dd>
2538
+
2539
+ <dt>sharpen</dt>
2540
+
2541
+ <dd class="imquote">Set <span class="arg">sharpen</span> to
2542
+ <code>true</code> to increase the image contrast otherwise
2543
+ the contrast is reduced.</dd>
2544
+
2545
+ <dt>channel...</dt>
2546
+
2547
+ <dd>0 or more <a href=
2548
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
2549
+ channels are specified, all the channels are adjusted.</dd>
2550
+ </dl>
2551
+
2552
+ <h4>Returns</h4>
2553
+
2554
+ <p>A new image</p>
2555
+
2556
+ <h4>See also</h4>
2557
+
2558
+ <p><a href="image1.html#contrast">contrast</a></p>
2559
+
2560
+ <h4>Magick API</h4>
2561
+
2562
+ <p>SigmoidalContrastImageChannel</p>
2563
+ </div>
2564
+
2565
+ <div class="sig">
2566
+ <h3 id="signature">signature</h3>
2567
+
2568
+ <p><span class="arg">img</span>.signature -&gt;
2569
+ <em>string</em></p>
2570
+ </div>
2571
+
2572
+ <div class="desc">
2573
+ <h4>Description</h4>
2574
+
2575
+ <p class="imquote">Computes a message digest from an image
2576
+ pixel stream with an implementation of the NIST SHA-256 Message
2577
+ Digest algorithm. This signature uniquely identifies the image
2578
+ and is convenient for determining if an image has been modified
2579
+ or whether two images are identical.</p>
2580
+
2581
+ <p>ImageMagick adds the computed signature to the image's
2582
+ properties.</p>
2583
+
2584
+ <h4>Returns</h4>
2585
+
2586
+ <p>The signature as a 64-character string.</p>
2587
+
2588
+ <h4>Example</h4>
2589
+ <pre>
2590
+ img = Image.read('ex/images/Flower_Hat.jpg').first &raquo;
2591
+ ex/images/Flower_Hat.jpg JPEG 200x250 DirectClass 8-bit 9761b
2592
+ img.properties &raquo;
2593
+ {"comment"=&gt;"File written by Adobe Photoshop\250 4.0"}
2594
+ img.signature &raquo;
2595
+ "485e01ecba1a1f47924d67b887cb07b474f695841733796dfa3c2876965c7e8b"
2596
+ img.properties &raquo;
2597
+ {"signature"=&gt;"485e01ecba1a1f47924d67b887cb07b474f695841733796dfa3c2876965c7e8b",
2598
+ "comment"=&gt;"File written by Adobe Photoshop\250 4.0"}
2599
+ </pre>
2600
+
2601
+ <h4>See also</h4>
2602
+
2603
+ <p><a href="image1.html#spaceship">&lt;=&gt;</a>, <a href=
2604
+ "image1.html#difference">difference</a></p>
2605
+
2606
+ <h4>Magick API</h4>
2607
+
2608
+ <p>SignatureImage</p>
2609
+ </div>
2610
+
2611
+ <div class="sig">
2612
+ <h3 id="sketch">sketch</h3>
2613
+
2614
+ <p><span class="arg">img</span>.sketch(<span class=
2615
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=1.0,
2616
+ <span class="arg">angle</span>=0.0) -&gt; <em>image</em></p>
2617
+ </div>
2618
+
2619
+ <div class="desc">
2620
+ <h4>Description</h4>
2621
+
2622
+ <p>Simulates a pencil sketch. For best results start with a
2623
+ grayscale image.</p>
2624
+
2625
+ <h4>Arguments</h4>
2626
+
2627
+ <dl>
2628
+ <dt>radius, sigma</dt>
2629
+
2630
+ <dd>The radius and sigma of the Gaussian operator</dd>
2631
+
2632
+ <dt>angle</dt>
2633
+
2634
+ <dd>The angle toward which the image is sketched.</dd>
2635
+ </dl>
2636
+
2637
+ <h4>Returns</h4>
2638
+
2639
+ <p>A new image</p>
2640
+
2641
+ <h4>Example</h4>
2642
+
2643
+ <p class="rollover"><a href=
2644
+ "javascript:popup('sketch.rb.html')"><img src="ex/sketch.jpg"
2645
+ title="Click to see the example script" alt="sketch example"
2646
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2647
+ "this.src='ex/sketch.jpg'" /></a> <img src="ex/images/spin.gif"
2648
+ alt="" class="spin" title=
2649
+ "Mouse over the example to see the original image" /></p>
2650
+
2651
+ <h4>Magick API</h4>
2652
+
2653
+ <p>SketchImage</p>
2654
+ </div>
2655
+
2656
+ <div class="sig">
2657
+ <h3 id="solarize">solarize</h3>
2658
+
2659
+ <p><span class="arg">img</span>.solarize(<span class=
2660
+ "arg">threshold</span>=50) -&gt; <em>image</em></p>
2661
+ </div>
2662
+
2663
+ <div class="desc">
2664
+ <h4>Description</h4>
2665
+
2666
+ <p class="imquote">Applies a special effect to the image
2667
+ similar to the effect achieved in a photo darkroom by
2668
+ selectively exposing areas of photo sensitive paper to
2669
+ light.</p>
2670
+
2671
+ <h4>Arguments</h4>
2672
+
2673
+ <p><span class="imquote">Ranges from 0 to QuantumRange and is a
2674
+ measure of the extent of the solarization.</span> The default
2675
+ is 50.</p>
2676
+
2677
+ <h4>Returns</h4>
2678
+
2679
+ <p>A new image</p>
2680
+
2681
+ <h4>Example</h4>
2682
+
2683
+ <p class="rollover"><a href=
2684
+ "javascript:popup('solarize.rb.html')"><img src=
2685
+ "ex/solarize.jpg" title="Click to see the example script" alt=
2686
+ "solarize example" onmouseover=
2687
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2688
+ "this.src='ex/solarize.jpg'" /></a> <img src=
2689
+ "ex/images/spin.gif" alt="" class="spin" title=
2690
+ "Mouse over the example to see the original image" /></p>
2691
+
2692
+ <h4>Magick API</h4>
2693
+
2694
+ <p>SolarizeImage</p>
2695
+ </div>
2696
+
2697
+ <div class="sig">
2698
+ <h3 id="sparse_color">sparse_color</h3>
2699
+
2700
+ <p><span class="arg">img</span>.sparse_color(<span class=
2701
+ "arg">method</span>, <span class="arg">x1</span>, <span class=
2702
+ "arg">y1</span>, <span class="arg">color1</span>[, <span class=
2703
+ "arg">x2</span>, <span class="arg">y2</span>, <span class=
2704
+ "arg">color2</span>...][, <span class="arg">channel</span>...])
2705
+ -&gt; <em>image</em></p>
2706
+ </div>
2707
+
2708
+ <div class="desc">
2709
+ <h4>Description</h4>
2710
+
2711
+ <p>Fills the image with the specified <span class=
2712
+ "arg">color</span> or colors, starting at the <span class=
2713
+ "arg">x</span>,<span class="arg">y</span> coordinates
2714
+ associated with the color and using the specified interpolation
2715
+ <span class="arg">method</span>.</p>
2716
+
2717
+ <p>For more information about this method see the ImageMagick
2718
+ documentation for the -sparse-color option. Also see <a href=
2719
+ "http://www.imagemagick.org/Usage/canvas/#sparse-color">Sparse
2720
+ Points of Color</a> at <a href=
2721
+ "http://www.imagemagick.org/Usage/">Examples of ImageMagick
2722
+ Usage</a>.</p>
2723
+
2724
+ <h4>Arguments</h4>
2725
+
2726
+ <dl>
2727
+ <dt>method</dt>
2728
+
2729
+ <dd>
2730
+ One of the following interpolation methods:
2731
+
2732
+ <dl>
2733
+ <dt>BarycentricColorInterpolate</dt>
2734
+
2735
+ <dd class="imquote">Three point triangle of color given 3
2736
+ points. Giving only 2 points will form a linear gradient
2737
+ between those points. Gradient is however not restricted
2738
+ to just the triangle or line.</dd>
2739
+
2740
+ <dt>BilinearColorInterpolate</dt>
2741
+
2742
+ <dd class="imquote">Like barycentric but for 4 points.
2743
+ Less than 4 points fall back to barycentric.</dd>
2744
+
2745
+ <dt>ShepardsColorInterpolate</dt>
2746
+
2747
+ <dd class="imquote">Colors points basied on the ratio of
2748
+ inverse distance squared. Generating spots of color in a
2749
+ sea of the average of colors.</dd>
2750
+
2751
+ <dt>VoronoiColorInterpolate</dt>
2752
+
2753
+ <dd class="imquote">Simply map each pixel to the to
2754
+ nearest color point given. The result are polygonal
2755
+ 'cells' of solid color.</dd>
2756
+ </dl>
2757
+ </dd>
2758
+
2759
+ <dt>xn, yn, colorn</dt>
2760
+
2761
+ <dd>One or more <span class="arg">x</span>,<span class=
2762
+ "arg">y</span>, <span class="arg">color</span> triplets.
2763
+ <span class="arg">X</span> and <span class="arg">y</span> are
2764
+ floating-point values. <span class="arg">Color</span> can be
2765
+ either a <a href="imusage.html#color_names">color name</a> or
2766
+ a <a href="struct.html#Pixel">pixel</a>.</dd>
2767
+
2768
+ <dt>channel...</dt>
2769
+
2770
+ <dd>0 or more <a href=
2771
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
2772
+ channels are specified then DefaultChannels is used.</dd>
2773
+ </dl>
2774
+
2775
+ <h4>Example</h4>
2776
+
2777
+ <p><a href="javascript:popup('sparse_color.rb.html')"><img src=
2778
+ "ex/sparse_color.png" title="Click to see the example script"
2779
+ alt="sparse_color example" /></a></p>
2780
+
2781
+ <h4>Returns</h4>
2782
+
2783
+ <p>A new image</p>
2784
+
2785
+ <h4>Magick API</h4>
2786
+
2787
+ <p>SparseColorImage (available in 6.4.3)</p>
2788
+ </div>
2789
+
2790
+ <div class="sig">
2791
+ <h3 id="splice">splice</h3>
2792
+
2793
+ <p><span class="arg">img</span>.splice(<span class=
2794
+ "arg">x</span>, <span class="arg">y</span>, <span class=
2795
+ "arg">width</span>, <span class="arg">height</span>[,
2796
+ <span class="arg">color</span>]) -&gt; <em>image</em></p>
2797
+ </div>
2798
+
2799
+ <div class="desc">
2800
+ <h4>Description</h4>
2801
+
2802
+ <p>Splice a solid color into the image as defined by the
2803
+ <code>x</code>, <code>y</code>, <code>width</code>, and
2804
+ <code>height</code> arguments. This method is the opposite of
2805
+ <a href="image1.html#chop">chop</a>.</p>
2806
+
2807
+ <h4>Arguments</h4>
2808
+
2809
+ <dl>
2810
+ <dt>x, y, width, height</dt>
2811
+
2812
+ <dd>Describe the rectangle to be spliced.</dd>
2813
+
2814
+ <dt>color</dt>
2815
+
2816
+ <dd>The color to be spliced. Either a <a href=
2817
+ "imusage.html#color_names">color name</a> or a <a href=
2818
+ "struct.html#Pixel">pixel</a>. If omitted, uses the image's
2819
+ background color.</dd>
2820
+ </dl>
2821
+
2822
+ <h4>Returns</h4>
2823
+
2824
+ <p>A new image</p>
2825
+
2826
+ <h4>Example</h4>
2827
+
2828
+ <p class="rollover"><a href=
2829
+ "javascript:popup('splice.rb.html')">
2830
+ <!-- This img tag displays the original image when the mouse is over -->
2831
+ <img style=
2832
+ "padding-left:8px;padding-right:8px;padding-bottom:10px;padding-bottom:10px; display:none"
2833
+ id="nosplice" onmouseout=
2834
+ "this.style.display='none';spliced.style.display='';" src=
2835
+ "ex/images/Flower_Hat.jpg" alt="splice example" title=
2836
+ "Click to see the example script" /><!--
2837
+ This img tag displays the spliced image when the mouse is not over
2838
+ --><img class="hide"
2839
+ id="spliced" onmouseover=
2840
+ "this.style.display='none';nosplice.style.display='';" src=
2841
+ "ex/splice.jpg" alt="splice example" /></a> <img src=
2842
+ "ex/images/spin.gif" alt="" style="margin-bottom: 250px" title=
2843
+ "Mouse over the example to see the original image" /></p>
2844
+
2845
+ <h4>See also</h4>
2846
+
2847
+ <p><a href=
2848
+ "image1.html#color_fill_to_border">color_fill_to_border</a>,
2849
+ <a href="image1.html#color_floodfill">color_floodfill</a>,
2850
+ <a href="image1.html#color_reset_bang">color_reset!</a>,
2851
+ <a href="image2.html#erase_bang">erase!</a>, <a href=
2852
+ "image2.html#opaque">opaque</a></p>
2853
+
2854
+ <h4>Magick API</h4>
2855
+
2856
+ <p>SpliceImage</p>
2857
+ </div>
2858
+
2859
+ <div class="sig">
2860
+ <h3 id="spread">spread</h3>
2861
+
2862
+ <p><span class="arg">img</span>.spread(<span class=
2863
+ "arg">radius</span>=3) -&gt; <em>image</em></p>
2864
+ </div>
2865
+
2866
+ <div class="desc">
2867
+ <h4>Description</h4>
2868
+
2869
+ <p class="imquote">Randomly displaces each pixel in a block
2870
+ defined by the <span class="arg"><em>radius</em></span>
2871
+ parameter.</p>
2872
+
2873
+ <h4>Returns</h4>
2874
+
2875
+ <p>A new image</p>
2876
+
2877
+ <h4>Example</h4>
2878
+
2879
+ <p class="rollover"><a href=
2880
+ "javascript:popup('spread.rb.html')"><img src="ex/spread.jpg"
2881
+ alt="spread example" title="Click to see the example script"
2882
+ onmouseover="this.src='ex/images/Flower_Hat.jpg'" onmouseout=
2883
+ "this.src='ex/spread.jpg'" /></a> <img src="ex/images/spin.gif"
2884
+ alt="" class="spin" title=
2885
+ "Mouse over the example to see the original image" /></p>
2886
+
2887
+ <h4>Magick API</h4>
2888
+
2889
+ <p>SpreadImage</p>
2890
+ </div>
2891
+
2892
+ <div class="sig">
2893
+ <h3 id="stegano">stegano</h3>
2894
+
2895
+ <p><span class="arg">img</span>.stegano(<span class=
2896
+ "arg">watermark</span>, <span class="arg">offset</span>) -&gt;
2897
+ <em>image</em></p>
2898
+ </div>
2899
+
2900
+ <div class="desc">
2901
+ <h4>Description</h4>
2902
+
2903
+ <p>Hides a digital watermark in the receiver. You can retrieve
2904
+ the watermark by reading the file with the
2905
+ <code>stegano:</code> prefix, thereby proving the authenticity
2906
+ of the file.</p>
2907
+
2908
+ <p>The watermarked image must be saved in a lossless RGB format
2909
+ such as MIFF, or PNG. You cannot save a watermarked image in a
2910
+ lossy format such as JPEG or a pseudocolor format such as GIF.
2911
+ Once written, the file must not be modified or processed in any
2912
+ way.</p>
2913
+
2914
+ <h4>Arguments</h4>
2915
+
2916
+ <dl>
2917
+ <dt>watermark</dt>
2918
+
2919
+ <dd>An image or imagelist to be used as the watermark. The
2920
+ watermark must be grayscale and should be substantially
2921
+ smaller than the receiver. The recovery time is proportional
2922
+ to the size of the watermark.</dd>
2923
+
2924
+ <dt>offset</dt>
2925
+
2926
+ <dd>The starting position within the receiver at which the
2927
+ watermark will be hidden. When you retrieve the watermark
2928
+ from the file, you must supply this value, along with the
2929
+ width and height of the watermark, in the <a href=
2930
+ "info.html#Info.size_eq">size</a> optional parameter to the
2931
+ <a href="image1.html#read">read</a> method.</dd>
2932
+ </dl>
2933
+
2934
+ <h4>Returns</h4>
2935
+
2936
+ <p>A copy of the image containing the embedded watermark.</p>
2937
+
2938
+ <h4>Example</h4>
2939
+
2940
+ <p><a href="javascript:popup('stegano.rb.html')"><img src=
2941
+ "ex/stegano.gif" title="Click to see the example script" alt=
2942
+ "stegano example" /></a></p>
2943
+
2944
+ <h4>Magick API</h4>
2945
+
2946
+ <p>SteganoImage</p>
2947
+
2948
+ <h4>See also</h4>
2949
+
2950
+ <p><a href="#watermark">watermark</a></p>
2951
+ </div>
2952
+
2953
+ <div class="sig">
2954
+ <h3 id="stereo">stereo</h3>
2955
+
2956
+ <p><span class="arg">img</span>.stereo(<span class=
2957
+ "arg">offset_image</span>) -&gt; <em>image</em></p>
2958
+ </div>
2959
+
2960
+ <div class="desc">
2961
+ <h4>Description</h4>
2962
+
2963
+ <p class="imquote">Combines two images and produces a single
2964
+ image that is the composite of a left and right image of a
2965
+ stereo pair. Special red-green stereo glasses are required to
2966
+ view this effect.</p>
2967
+
2968
+ <h4>Arguments</h4>
2969
+
2970
+ <p>Another image or imagelist. If the argument is an imagelist,
2971
+ uses the current image.</p>
2972
+
2973
+ <h4>Returns</h4>
2974
+
2975
+ <p>A new image</p>
2976
+
2977
+ <h4>Magick API</h4>
2978
+
2979
+ <p>StereoImage</p>
2980
+ </div>
2981
+
2982
+ <div class="sig">
2983
+ <h3 id="store_pixels">store_pixels</h3>
2984
+
2985
+ <p><span class="arg">img</span>.store_pixels(<span class=
2986
+ "arg">x</span>, <span class="arg">y</span>, <span class=
2987
+ "arg">columns</span>, <span class="arg">rows</span>,
2988
+ <span class="arg">pixels</span>) -&gt; <em>image</em></p>
2989
+ </div>
2990
+
2991
+ <div class="desc">
2992
+ <h4>Description</h4>
2993
+
2994
+ <p>Replace the pixels in the specified rectangle with the
2995
+ pixels in the <em>pixels</em> array.</p>
2996
+
2997
+ <h4>Arguments</h4>
2998
+
2999
+ <dl>
3000
+ <dt>x, y</dt>
3001
+
3002
+ <dd>The x- and y-offset of the rectangle to be replaced.</dd>
3003
+
3004
+ <dt>columns, rows</dt>
3005
+
3006
+ <dd>The number of rows and columns in the rectangle.</dd>
3007
+
3008
+ <dt>pixels</dt>
3009
+
3010
+ <dd>An array of <a href="struct.html#Pixel">pixels</a>. The
3011
+ number of pixels in the array must be the same as the number
3012
+ of pixels in the rectangle, that is,
3013
+ <code>rows*columns</code>.</dd>
3014
+ </dl>
3015
+
3016
+ <h4>Returns</h4>
3017
+
3018
+ <p>The image, with the rectangle suitably altered.</p>
3019
+
3020
+ <h4>Example</h4>
3021
+
3022
+ <p><a href="javascript:popup('smile.rb.html')"><img src=
3023
+ "ex/smile.gif" title="Click to see the example script" alt=
3024
+ "smile example" /></a></p>
3025
+
3026
+ <p>Also see the example for <a href=
3027
+ "image2.html#get_pixels"><code>get_pixels</code></a>.</p>
3028
+
3029
+ <h4>See also</h4>
3030
+
3031
+ <p><a href="image1.html#constitute">constitute</a>, <a href=
3032
+ "image2.html#get_pixels">get_pixels</a>, <a href=
3033
+ "#view">view</a></p>
3034
+
3035
+ <h4>Magick API</h4>
3036
+
3037
+ <p>SetImagePixels, SyncImagePixels</p>
3038
+ </div>
3039
+
3040
+ <div class="sig">
3041
+ <h3 id="strip_bang">strip!</h3>
3042
+
3043
+ <p><span class="arg">img</span>.strip! -&gt; <em>self</em></p>
3044
+ </div>
3045
+
3046
+ <div class="desc">
3047
+ <h4>Description</h4>
3048
+
3049
+ <p class="imquote">Strips an image of all profiles and
3050
+ comments.</p>
3051
+
3052
+ <h4>Returns</h4>
3053
+
3054
+ <p>self</p>
3055
+
3056
+ <h4>Magick API</h4>
3057
+
3058
+ <p>StripImage</p>
3059
+ </div>
3060
+
3061
+ <div class="sig">
3062
+ <h3 id="swirl">swirl</h3>
3063
+
3064
+ <p><span class="arg">img</span>.swirl(<span class=
3065
+ "arg">degrees</span>) -&gt; <em>image</em></p>
3066
+ </div>
3067
+
3068
+ <div class="desc">
3069
+ <h4>Description</h4>
3070
+
3071
+ <p class="imquote">Swirls the pixels about the center of the
3072
+ image, where degrees indicates the sweep of the arc through
3073
+ which each pixel is moved. You get a more dramatic effect as
3074
+ the degrees move from 1 to 360.</p>
3075
+
3076
+ <h4>Arguments</h4>
3077
+
3078
+ <p>The number of degrees to swirl the image.</p>
3079
+
3080
+ <h4>Returns</h4>
3081
+
3082
+ <p>A new image</p>
3083
+
3084
+ <h4>Example</h4>
3085
+
3086
+ <p>This example is an animated image. Mouse over the image to
3087
+ start the animation.</p>
3088
+
3089
+ <p class="rollover"><a href=
3090
+ "javascript:popup('swirl.rb.html')"><img onmouseover=
3091
+ "this.src='ex/swirl.gif'" onmouseout=
3092
+ "this.src='ex/images/Flower_Hat.jpg'" src=
3093
+ "ex/images/Flower_Hat.jpg" alt="swirl example" title=
3094
+ "Click the image to see the example script" /></a><img src=
3095
+ "ex/images/spin.gif" alt="" class="spin" title=
3096
+ "Mouse over the example to see the animation" /></p>
3097
+
3098
+ <h4>Magick API</h4>
3099
+
3100
+ <p>SwirlImage</p>
3101
+ </div>
3102
+
3103
+ <div class="sig">
3104
+ <h3 id="sync_profiles">sync_profiles</h3>
3105
+
3106
+ <p><span class="arg">img</span>.sync_profiles -&gt;
3107
+ <code>true</code> or <code>false</code></p>
3108
+ </div>
3109
+
3110
+ <div class="desc">
3111
+ <h4>Description</h4>
3112
+
3113
+ <p class="imquote">Synchronizes image properties with the image
3114
+ profiles.</p>
3115
+
3116
+ <h4>Returns</h4>
3117
+
3118
+ <p><code>True</code> if everything went okay,
3119
+ <code>false</code> if there was a problem with the profile.</p>
3120
+
3121
+ <h4>Notes</h4>
3122
+
3123
+ <p class="imquote">Currently we only support updating the EXIF
3124
+ resolution and orientation.</p>
3125
+
3126
+ <h4>Magick API</h4>
3127
+
3128
+ <p>SyncImageProfiles</p>
3129
+ </div>
3130
+
3131
+ <div class="sig">
3132
+ <h3 id="texture_fill_to_border">texture_fill_to_border</h3>
3133
+
3134
+ <p><span class=
3135
+ "arg">img</span>.texture_fill_to_border(<span class=
3136
+ "arg">x</span>, <span class="arg">y</span>, <span class=
3137
+ "arg">texture</span>) -&gt; <em>image</em></p>
3138
+ </div>
3139
+
3140
+ <div class="desc">
3141
+ <h4>Description</h4>
3142
+
3143
+ <p>Replaces the target pixel at <span class="arg">x</span>,
3144
+ <span class="arg">y</span> and its neighbors that are not the
3145
+ border color with copies of the <span class=
3146
+ "arg">texture</span> image. Use the <a href=
3147
+ "imageattrs.html#fuzz">fuzz</a> attribute to specify how
3148
+ closely a pixel must match the border color.</p>
3149
+
3150
+ <h4>Arguments</h4>
3151
+
3152
+ <dl>
3153
+ <dt>x, y</dt>
3154
+
3155
+ <dd>The x- and y-offset of the target pixel.</dd>
3156
+
3157
+ <dt>texture</dt>
3158
+
3159
+ <dd>An image or imagelist. If an imagelist, uses the current
3160
+ image.</dd>
3161
+ </dl>
3162
+
3163
+ <h4>Returns</h4>
3164
+
3165
+ <p>A new image</p>
3166
+
3167
+ <h4>Example</h4>
3168
+
3169
+ <p>In this example the target is the pixel in the center of the
3170
+ image. The texture - in this case a picture of a girl in a
3171
+ flowered hat - replaces this pixel and its neighbors until
3172
+ reaching a black pixel. Mouse over the image to see the
3173
+ original image. Notice the plum-colored circles are replaced as
3174
+ well. Compare this result with the result of
3175
+ <code>texture_floodfill</code>, below.</p>
3176
+
3177
+ <p class="rollover"><a href=
3178
+ "javascript:popup('texture_fill_to_border.rb.html')"><img src=
3179
+ "ex/texture_fill_to_border_after.gif" alt=
3180
+ "texture_fill_to_border example" onmouseover=
3181
+ "this.src='ex/texture_fill_to_border_before.gif'" onmouseout=
3182
+ "this.src='ex/texture_fill_to_border_after.gif'" title=
3183
+ "Click to see the example script" /></a> <img src=
3184
+ "ex/images/spin.gif" alt="" class="spin" style="left:206px;"
3185
+ title="Mouse over the example to see the original image" /></p>
3186
+
3187
+ <h4>See also</h4>
3188
+
3189
+ <p><a href=
3190
+ "image1.html#color_fill_to_border">color_fill_to_border</a>,
3191
+ <a href=
3192
+ "image2.html#matte_fill_to_border">matte_fill_to_border</a></p>
3193
+
3194
+ <h4>Magick API</h4>
3195
+
3196
+ <p>ColorFloodfillImage</p>
3197
+ </div>
3198
+
3199
+ <div class="sig">
3200
+ <h3 id="texture_floodfill">texture_floodfill</h3>
3201
+
3202
+ <p><span class="arg">img</span>.texture_floodfill(<span class=
3203
+ "arg">x</span>, <span class="arg">y</span>, <span class=
3204
+ "arg">texture</span>) -&gt; <em>image</em></p>
3205
+ </div>
3206
+
3207
+ <div class="desc">
3208
+ <h4>Description</h4>
3209
+
3210
+ <p>Replaces the target pixel at <span class="arg">x</span>,
3211
+ <span class="arg">y</span> and its neighbors that are the same
3212
+ color with the <span class="arg">texture</span> image. By
3213
+ default, the neighbor pixels must be exactly the same color as
3214
+ the target pixel. Use the <a href=
3215
+ "imageattrs.html#fuzz">fuzz</a> attribute to specify how much
3216
+ difference is acceptable.</p>
3217
+
3218
+ <h4>Arguments</h4>
3219
+
3220
+ <dl>
3221
+ <dt>x, y</dt>
3222
+
3223
+ <dd>The x- and y-offset of the target pixel.</dd>
3224
+
3225
+ <dt>texture</dt>
3226
+
3227
+ <dd>An image or imagelist. If an imagelist, uses the current
3228
+ image.</dd>
3229
+ </dl>
3230
+
3231
+ <h4>Returns</h4>
3232
+
3233
+ <p>A new image</p>
3234
+
3235
+ <h4>Example</h4>
3236
+
3237
+ <p>In this example the target is the pixel in the center of the
3238
+ image. The texture - in this case a picture of a girl in a
3239
+ flowered hat - replaces this pixel and its same-colored
3240
+ neighbors. Mouse over the image to see the original image.
3241
+ Notice the plum-colored circles are not replaced. Compare this
3242
+ result with the result of <code>texture_fill_to_border</code>,
3243
+ above.</p>
3244
+
3245
+ <p class="rollover"><a href=
3246
+ "javascript:popup('texture_floodfill.rb.html')"><img src=
3247
+ "ex/texture_floodfill_after.gif" alt=
3248
+ "texture_floodfill example" onmouseover=
3249
+ "this.src='ex/texture_floodfill_before.gif'" onmouseout=
3250
+ "this.src='ex/texture_floodfill_after.gif'" title=
3251
+ "Click to see the example script" /></a><img src=
3252
+ "ex/images/spin.gif" alt="" class="spin" style="left:206px;"
3253
+ title="Mouse over the example to see the original image" /></p>
3254
+
3255
+ <h4>See also</h4>
3256
+
3257
+ <p><a href="image1.html#color_floodfill">color_floodfill</a>,
3258
+ <a href="image2.html#matte_floodfill">matte_floodfill</a></p>
3259
+
3260
+ <h4>Magick API</h4>
3261
+
3262
+ <p>ColorFloodfillImage</p>
3263
+ </div>
3264
+
3265
+ <div class="sig">
3266
+ <h3 id="threshold">threshold</h3>
3267
+
3268
+ <p><span class="arg">img</span>.threshold(<span class=
3269
+ "arg">threshold</span>) -&gt; <em>image</em></p>
3270
+ </div>
3271
+
3272
+ <div class="desc">
3273
+ <h4>Description</h4>
3274
+
3275
+ <p class="imquote">Changes the value of individual pixels based
3276
+ on the intensity of each pixel compared to <span class=
3277
+ "arg">threshold</span>. The result is a high-contrast, two
3278
+ color image.</p>
3279
+
3280
+ <h4>Arguments</h4>
3281
+
3282
+ <p>A value between 0 and QuantumRange.</p>
3283
+
3284
+ <h4>Returns</h4>
3285
+
3286
+ <p>A new image</p>
3287
+
3288
+ <h4>Example</h4>
3289
+
3290
+ <p><code>threshold(MaxRGB*0.55)</code></p>
3291
+
3292
+ <p class="rollover"><a href=
3293
+ "javascript:popup('threshold.rb.html')"><img src=
3294
+ "ex/threshold.jpg" onmouseover=
3295
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
3296
+ "this.src='ex/threshold.jpg'" title=
3297
+ "Click to see the example script" alt=
3298
+ "threshold example" /></a><img src="ex/images/spin.gif" alt=""
3299
+ class="spin" title=
3300
+ "Mouse over the example to see the original image" /></p>
3301
+
3302
+ <h4>See also</h4>
3303
+
3304
+ <p><a href=
3305
+ "image1.html#adaptive_threshold">adaptive_threshold</a>,
3306
+ <a href="image1.html#bilevel_channel">bilevel_channel</a>,
3307
+ <a href=
3308
+ "#random_threshold_channel">random_threshold_channel</a></p>
3309
+
3310
+ <h4>Magick API</h4>
3311
+
3312
+ <p>ThresholdImage</p>
3313
+ </div>
3314
+
3315
+ <div class="sig">
3316
+ <h3 id="thumbnail">thumbnail</h3>
3317
+
3318
+ <p><span class="arg">img</span>.thumbnail(<span class=
3319
+ "arg">new_width</span>, <span class="arg">new_height</span>)
3320
+ -&gt; <em>image</em><br />
3321
+ <span class="arg">img</span>.thumbnail(<span class=
3322
+ "arg">scale_factor</span>) -&gt; <em>image</em></p>
3323
+ </div>
3324
+
3325
+ <div class="desc">
3326
+ <h4>Description</h4>
3327
+
3328
+ <p>The <code>thumbnail</code> method is a fast resizing method
3329
+ suitable for use when the size of the resulting image is &lt;
3330
+ 10% of the original.</p>
3331
+
3332
+ <h4>Arguments</h4>
3333
+
3334
+ <p>You can call <code>thumbnail</code> with either the new
3335
+ width and height or the scale factor.</p>
3336
+
3337
+ <dl>
3338
+ <dt>new_width, new_height</dt>
3339
+
3340
+ <dd>The desired width and height in pixels.</dd>
3341
+
3342
+ <dt>scale_factor</dt>
3343
+
3344
+ <dd>The desired size represented as a floating-point number.
3345
+ For example, to make a thumbnail that is 9.5% of the size of
3346
+ the original image, use <code>0.095</code>.</dd>
3347
+ </dl>
3348
+
3349
+ <h4>Returns</h4>
3350
+
3351
+ <p>A new image</p>
3352
+
3353
+ <h4>Example</h4>
3354
+ <pre>
3355
+ img = Image.read("images/Cheetah.jpg").first
3356
+ thumbnail = img.thumbnail(img.columns*0.09, img.rows*0.09)
3357
+ </pre>
3358
+
3359
+ <h4>See also</h4>
3360
+
3361
+ <p><a href="image2.html#minify">minify</a>, <a href=
3362
+ "#resize">resize</a>, <a href="#sample">sample</a>, <a href=
3363
+ "#scale">scale</a></p>
3364
+
3365
+ <h4>Magick API</h4>
3366
+
3367
+ <p>ThumbnailImage</p>
3368
+ </div>
3369
+
3370
+ <div class="sig">
3371
+ <h3 id="thumbnail_bang">thumbnail!</h3>
3372
+
3373
+ <p><span class="arg">img</span>.thumbnail!(<span class=
3374
+ "arg">new_width</span>, <span class="arg">new_height</span>)
3375
+ -&gt; <em>self</em><br />
3376
+ <span class="arg">img</span>.thumbnail!(<span class=
3377
+ "arg">scale_factor</span>) -&gt; <em>self</em></p>
3378
+ </div>
3379
+
3380
+ <div class="desc">
3381
+ <h4>Description</h4>
3382
+
3383
+ <p>In-place form of <a href="#thumbnail">thumbnail</a>.</p>
3384
+
3385
+ <h4>Returns</h4>
3386
+
3387
+ <p>self</p>
3388
+ </div>
3389
+
3390
+ <div class="sig">
3391
+ <h3 id="to_blob">to_blob</h3>
3392
+
3393
+ <p><span class="arg">img</span>.to_blob <span class="arg">[ {
3394
+ optional arguments } ]</span>-&gt; <em>string</em></p>
3395
+ </div>
3396
+
3397
+ <div class="desc">
3398
+ <h4>Description</h4>
3399
+
3400
+ <p>Creates a <em>B</em>inary <em>L</em>arge <em>OB</em>ject, a
3401
+ direct-to-memory version of the image. The <a href=
3402
+ "image1.html#from_blob">from_blob</a> method constructs an
3403
+ image from a BLOB created by this method.</p>
3404
+
3405
+ <h4>Arguments</h4>
3406
+
3407
+ <p>No required arguments, however you can specify the image
3408
+ format (such as JPEG, PNG, etc.) and depth by calling the
3409
+ <a href="imageattrs.html#format">format</a> and <a href=
3410
+ "imageattrs.html#Image.depth">depth</a> attributes, as well as
3411
+ other <a href="info.html">Image::Info</a> attributes as
3412
+ appropriate, in a block associated with the method.</p>
3413
+
3414
+ <h4>Returns</h4>
3415
+
3416
+ <p>A string containing the image data represented as a
3417
+ BLOB.</p>
3418
+
3419
+ <h4>Example</h4>
3420
+
3421
+ <p><a href="javascript:popup('to_blob.rb.html')"><img src=
3422
+ "ex/to_blob.gif" alt="to_blob example" title=
3423
+ "Click to see the example script" /></a></p>
3424
+
3425
+ <h4>See also</h4>
3426
+
3427
+ <p><a href="image1.html#from_blob">from_blob</a></p>
3428
+
3429
+ <h4>Magick API</h4>
3430
+
3431
+ <p>ImageToBlob</p>
3432
+ </div>
3433
+
3434
+ <div class="sig">
3435
+ <h3 id="to_color">to_color</h3>
3436
+
3437
+ <p><span class="arg">img</span>.to_color(<span class=
3438
+ "arg">pixel</span>) -&gt; <em>string</em></p>
3439
+ </div>
3440
+
3441
+ <div class="desc">
3442
+ <h4>Description</h4>
3443
+
3444
+ <p>Returns the color name for a pixel. Unlike the
3445
+ <code>Pixel#to_color</code> method, to_color uses the <a href=
3446
+ "imageattrs.html#Image.depth">depth</a> and <a href=
3447
+ "imageattrs.html#Image.matte">matte</a> attributes of the image
3448
+ to determine the color name.</p>
3449
+
3450
+ <h4>Arguments</h4>
3451
+
3452
+ <p>A <a href="struct.html#Pixel">Pixel</a> object.</p>
3453
+
3454
+ <h4>Returns</h4>
3455
+
3456
+ <p>A <a href="imusage.html#color_names">color name</a>.</p>
3457
+
3458
+ <h4>Example</h4>
3459
+ <pre>
3460
+ img = Image.read('ex/images/Flower_Hat.jpg').first
3461
+ &raquo; ex/images/Flower_Hat.jpg JPEG 200x250 DirectClass 8-bit 9761b
3462
+ pixel = img.pixel_color(img.columns/2, img.rows/2)
3463
+ &raquo; #&lt;struct Pixel red=216, green=147, blue=106, opacity=0&gt;
3464
+ img.to_color(pixel)
3465
+ &raquo; "#D8936A"
3466
+ </pre>
3467
+
3468
+ <h4>See also</h4>
3469
+
3470
+ <p><a href="struct.html#Pixel">Pixel#to_color</a></p>
3471
+
3472
+ <h4>Magick API</h4>
3473
+
3474
+ <p>QueryColorname</p>
3475
+ </div>
3476
+
3477
+ <div class="sig">
3478
+ <h3 id="transparent">transparent</h3>
3479
+
3480
+ <p><span class="arg">img</span>.transparent(<span class=
3481
+ "arg">color</span>, <span class=
3482
+ "arg">opacity</span>=TransparentOpacity) -&gt;
3483
+ <em>image</em></p>
3484
+ </div>
3485
+
3486
+ <div class="desc">
3487
+ <h4>Description</h4>
3488
+
3489
+ <p>Changes the opacity value of all the pixels that match
3490
+ <span class="arg">color</span> to the value specified by
3491
+ <span class="arg">opacity</span>. By default the pixel must
3492
+ match exactly, but you can specify a tolerance level by setting
3493
+ the <a href="imageattrs.html#fuzz">fuzz</a> attribute on the
3494
+ image.</p>
3495
+
3496
+ <h4>Arguments</h4>
3497
+
3498
+ <dl>
3499
+ <dt>color</dt>
3500
+
3501
+ <dd>Either a <a href="imusage.html#color_names">color
3502
+ name</a> or a <a href="struct.html#Pixel">pixel</a>.</dd>
3503
+
3504
+ <dt>opacity</dt>
3505
+
3506
+ <dd>The new opacity value, either an <a href=
3507
+ "constants.html#Opacity">opacity</a> value or a number
3508
+ between 0 and QuantumRange. The default is
3509
+ TransparentOpacity.</dd>
3510
+ </dl>
3511
+
3512
+ <h4>Returns</h4>
3513
+
3514
+ <p>A new image</p>
3515
+
3516
+ <h4>Example</h4>
3517
+
3518
+ <p>Mouse over the image to see the original. In this example,
3519
+ all the black pixels are made transparent. The resulting image
3520
+ has been composited over a plasma background, which shows
3521
+ through the transparent pixels.</p>
3522
+
3523
+ <p class="rollover"><a href=
3524
+ "javascript:popup('transparent.rb.html')"><img src=
3525
+ "ex/transparent_after.gif" title=
3526
+ "Click to see the example script" onmouseover=
3527
+ "this.src='ex/transparent_before.gif'" onmouseout=
3528
+ "this.src='ex/transparent_after.gif'" alt=
3529
+ "transparent example" /></a><img src="ex/images/spin.gif" alt=
3530
+ "" class="spin" title=
3531
+ "Mouse over the example to see the original image" /></p>
3532
+
3533
+ <h4>See also</h4>
3534
+
3535
+ <p><a href="image2.html#matte_replace">matte_replace</a>,
3536
+ <a href="draw.html#matte">Draw#matte</a>, <a href=
3537
+ "#paint_transparent">paint_transparent</a>, <a href=
3538
+ "#transparent_chroma">transparent_chroma</a></p>
3539
+
3540
+ <h4>Magick API</h4>
3541
+
3542
+ <p>TransparentPaintImage</p>
3543
+ </div>
3544
+
3545
+ <div class="sig">
3546
+ <h3 id="transparent_chroma">transparent_chroma</h3>
3547
+
3548
+ <p><span class="arg">img</span>.transparent_chroma(<span class=
3549
+ "arg">low</span>, <span class="arg">high</span>, <span class=
3550
+ "arg">opacity</span>=TransparentOpacity, <span class=
3551
+ "arg">invert</span>=<code>false</code>) -&gt;
3552
+ <em>image</em></p>
3553
+ </div>
3554
+
3555
+ <div class="desc">
3556
+ <h4>Description</h4>
3557
+
3558
+ <p>Changes the opacity value associated with any pixel between
3559
+ <span class="arg">low</span> and <span class="arg">high</span>
3560
+ to the value defined by <span class="arg">opacity</span>.</p>
3561
+
3562
+ <p class="imquote">As there is one fuzz value for the all the
3563
+ channels, the <a href="#transparent">transparent</a> method is
3564
+ not suitable for the operations like chroma, where the
3565
+ tolerance for similarity of two color components (RGB) can be
3566
+ different, Thus we define this method take two target pixels
3567
+ (one low and one high) and all the pixels of an image which are
3568
+ lying between these two pixels are made transparent.</p>
3569
+
3570
+ <h4>Arguments</h4>
3571
+
3572
+ <dl>
3573
+ <dt>low, high</dt>
3574
+
3575
+ <dd>The low and high ends of the pixel range</dd>
3576
+
3577
+ <dt>opacity</dt>
3578
+
3579
+ <dd>The desired opacity. The default value is
3580
+ transparent.</dd>
3581
+
3582
+ <dt>invert</dt>
3583
+
3584
+ <dd>If true, all pixels outside the range are set to
3585
+ <span class="arg">opacity</span>.</dd>
3586
+ </dl>
3587
+
3588
+ <h4>Returns</h4>
3589
+
3590
+ <p>A new image</p>
3591
+
3592
+ <h4>Magick API</h4>
3593
+
3594
+ <p>TransparentPaintImageChroma (available in ImageMagick
3595
+ 6.4.5-6)</p>
3596
+ </div>
3597
+
3598
+ <div class="sig">
3599
+ <h3 id="transpose">transpose</h3>
3600
+
3601
+ <p><span class="arg">img</span>.transpose -&gt;
3602
+ <em>image</em></p>
3603
+ </div>
3604
+
3605
+ <div class="desc">
3606
+ <h4>Description</h4>
3607
+
3608
+ <p class="imquote">Creates a horizontal mirror image by
3609
+ reflecting the pixels around the central y-axis while rotating
3610
+ them by 90 degrees.</p>
3611
+
3612
+ <h4>Returns</h4>
3613
+
3614
+ <p>A new image</p>
3615
+
3616
+ <h4>Example</h4>
3617
+
3618
+ <p class="rollover"><a href=
3619
+ "javascript:popup('transpose.rb.html')"><img src=
3620
+ "ex/transpose.jpg" alt="transpose example" title=
3621
+ "Click to see the example script" onmouseover=
3622
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
3623
+ "this.src='ex/transpose.jpg'" /></a> <img src=
3624
+ "ex/images/spin.gif" alt="" class="spin" style="left:252px;"
3625
+ title="Mouse over the example to see the original image" /></p>
3626
+
3627
+ <h4>See also</h4>
3628
+
3629
+ <p><a href="image2.html#flip">flip</a>, <a href=
3630
+ "image2.html#flop">flop</a>, <a href=
3631
+ "image3.html#rotate">rotate</a>, <a href=
3632
+ "#transpose_bang">transpose!</a>, <a href=
3633
+ "image3.html#transverse">transverse</a></p>
3634
+
3635
+ <h4>Magick API</h4>
3636
+
3637
+ <p>TransposeImage</p>
3638
+ </div>
3639
+
3640
+ <div class="sig">
3641
+ <h3 id="transpose_bang">transpose!</h3>
3642
+
3643
+ <p><span class="arg">img</span>.transpose! -&gt;
3644
+ <em>self</em></p>
3645
+ </div>
3646
+
3647
+ <div class="desc">
3648
+ <h4>Description</h4>
3649
+
3650
+ <p>In-place form of <a href="#transpose">transpose</a>.</p>
3651
+
3652
+ <h4>Returns</h4>
3653
+
3654
+ <p>self</p>
3655
+ </div>
3656
+
3657
+ <div class="sig">
3658
+ <h3 id="transverse">transverse</h3>
3659
+
3660
+ <p><span class="arg">img</span>.transverse -&gt;
3661
+ <em>image</em></p>
3662
+ </div>
3663
+
3664
+ <div class="desc">
3665
+ <h4>Description</h4>
3666
+
3667
+ <p class="imquote">Creates a vertical mirror image by
3668
+ reflecting the pixels around the central x-axis while rotating
3669
+ them by 270 degrees</p>
3670
+
3671
+ <h4>Returns</h4>
3672
+
3673
+ <p>A new image</p>
3674
+
3675
+ <h4>Example</h4>
3676
+
3677
+ <p class="rollover"><a href=
3678
+ "javascript:popup('transverse.rb.html')"><img src=
3679
+ "ex/transverse.jpg" alt="transverse example" title=
3680
+ "Click to see the example script" onmouseover=
3681
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
3682
+ "this.src='ex/transverse.jpg'" /></a> <img src=
3683
+ "ex/images/spin.gif" alt="" class="spin" style="left:252px;"
3684
+ title="Mouse over the example to see the original image" /></p>
3685
+
3686
+ <h4>See also</h4>
3687
+
3688
+ <p><a href="image2.html#flip">flip</a>, <a href=
3689
+ "image2.html#flop">flop</a>, <a href=
3690
+ "image3.html#rotate">rotate</a>, <a href=
3691
+ "image3.html#transpose">transpose</a>, <a href=
3692
+ "#transverse_bang">transverse!</a></p>
3693
+
3694
+ <h4>Magick API</h4>
3695
+
3696
+ <p>TransposeImage</p>
3697
+ </div>
3698
+
3699
+ <div class="sig">
3700
+ <h3 id="transverse_bang">transverse!</h3>
3701
+
3702
+ <p><span class="arg">img</span>.transverse! -&gt;
3703
+ <em>self</em></p>
3704
+ </div>
3705
+
3706
+ <div class="desc">
3707
+ <h4>Description</h4>
3708
+
3709
+ <p>In-place form of <a href="#transverse">transverse</a>.</p>
3710
+
3711
+ <h4>Returns</h4>
3712
+
3713
+ <p>self</p>
3714
+ </div>
3715
+
3716
+ <div class="sig">
3717
+ <h3 id="trim">trim</h3>
3718
+
3719
+ <p><span class="arg">img</span>.trim(<span class=
3720
+ "arg">reset</span>=false) -&gt; <em>image</em></p>
3721
+ </div>
3722
+
3723
+ <div class="desc">
3724
+ <h4>Description</h4>
3725
+
3726
+ <p class="imquote">Removes the edges that are exactly the same
3727
+ color as the corner pixels. Use the <a href=
3728
+ "imageattrs.html#fuzz">fuzz</a> attribute to make
3729
+ <code>trim</code> remove edges that are nearly the same color
3730
+ as the corner pixels.</p>
3731
+
3732
+ <h4>Arguments</h4>
3733
+
3734
+ <p>The trim method retains the offset information in the
3735
+ cropped image. This may cause the image to appear to be
3736
+ surrounded by blank or black space when viewed with an external
3737
+ viewer. This only occurs when the image is saved in a format
3738
+ (such as GIF) that saves offset information. To reset the
3739
+ offset data, use true as the argument to trim. See also
3740
+ <a href="image1.html#crop">crop</a>.</p>
3741
+
3742
+ <h4>Returns</h4>
3743
+
3744
+ <p>A new image</p>
3745
+
3746
+ <h4>Example</h4>
3747
+
3748
+ <p class="rollover"><a href=
3749
+ "javascript:popup('trim.rb.html')"><img src="ex/trim_after.jpg"
3750
+ onmouseover="this.src='ex/trim_before.jpg'" onmouseout=
3751
+ "this.src='ex/trim_after.jpg'" alt="trim example" title=
3752
+ "Click to see the example script" /></a> <img src=
3753
+ "ex/images/spin.gif" alt="" class="spin" title=
3754
+ "Mouse over the image to see the original image" /></p>
3755
+
3756
+ <h4>See also</h4>
3757
+
3758
+ <p><a href="image1.html#crop">crop</a></p>
3759
+
3760
+ <h4>Magick API</h4>
3761
+
3762
+ <p>CropImage</p>
3763
+ </div>
3764
+
3765
+ <div class="sig">
3766
+ <h3 id="trim_bang">trim!</h3>
3767
+
3768
+ <p><span class="arg">img</span>.trim!(<span class=
3769
+ "arg">reset</span>=false) -&gt; <em>self</em></p>
3770
+ </div>
3771
+
3772
+ <div class="desc">
3773
+ <p>In-place form of <a href="#trim">trim</a>.</p>
3774
+
3775
+ <h4>Returns</h4>
3776
+
3777
+ <p>self</p>
3778
+ </div>
3779
+
3780
+ <div class="sig">
3781
+ <h3 id="unique_colors">unique_colors</h3>
3782
+
3783
+ <p><span class="arg">img</span>.unique_colors -&gt;
3784
+ <em>image</em></p>
3785
+ </div>
3786
+
3787
+ <div class="desc">
3788
+ <h4>Description</h4>
3789
+
3790
+ <p>Constructs a new image with one pixel for each unique color
3791
+ in the image. The new image has 1 row. The row has 1 column for
3792
+ each unique pixel in the image.</p>
3793
+
3794
+ <h4>Returns</h4>
3795
+
3796
+ <p>A new image</p>
3797
+
3798
+ <h4>Magick API</h4>
3799
+
3800
+ <p>UniqueImageColors</p>
3801
+ </div>
3802
+
3803
+ <div class="sig">
3804
+ <h3 id="unsharp_mask">unsharp_mask</h3>
3805
+
3806
+ <p><span class="arg">img</span>.unsharp_mask(<span class=
3807
+ "arg">radius=0.0</span>, <span class="arg">sigma=1.0</span>,
3808
+ <span class="arg">amount=1.0</span>, <span class=
3809
+ "arg">threshold=0.05</span>) -&gt; <em>image</em></p>
3810
+ </div>
3811
+
3812
+ <div class="desc">
3813
+ <h4>Description</h4>
3814
+
3815
+ <p class="imquote">Sharpens an image. We convolve the image
3816
+ with a Gaussian operator of the given <span class=
3817
+ "arg">radius</span> and standard deviation (<span class=
3818
+ "arg">sigma</span>). For reasonable results, <span class=
3819
+ "arg">radius</span> should be larger than <span class=
3820
+ "arg">sigma</span>. Use a radius of 0 and
3821
+ <code>unsharp_mask</code> selects a suitable radius for
3822
+ you.</p>
3823
+
3824
+ <h4>Arguments</h4>
3825
+
3826
+ <p>All arguments are optional.</p>
3827
+
3828
+ <dl>
3829
+ <dt>radius</dt>
3830
+
3831
+ <dd>The radius of the Gaussian operator. The default is
3832
+ 0.0.</dd>
3833
+
3834
+ <dt>sigma</dt>
3835
+
3836
+ <dd>The standard deviation of the Gaussian operator. A good
3837
+ starting value is 1.0, which is the default.</dd>
3838
+
3839
+ <dt>amount</dt>
3840
+
3841
+ <dd>The percentage of the blurred image to be added to the
3842
+ receiver, specified as a fraction between 0 and 1.0. A good
3843
+ starting value is 1.0, which is the default.</dd>
3844
+
3845
+ <dt>threshold</dt>
3846
+
3847
+ <dd>The threshold needed to apply the amount, specified as a
3848
+ fraction between 0 and 1.0. A good starting value is 0.05,
3849
+ which is the default.</dd>
3850
+ </dl>
3851
+
3852
+ <h4>Returns</h4>
3853
+
3854
+ <p>A new image</p>
3855
+
3856
+ <h4>Example</h4>
3857
+
3858
+ <p><a href=
3859
+ "javascript:popup:('unsharp_mask.rb.html')"><img src="ex/unsharp_mask.jpg"
3860
+ alt="unsharp_mask example" title=
3861
+ "Click to see the example script" /></a></p>
3862
+
3863
+ <h4>See also</h4>
3864
+
3865
+ <p><a href="image2.html#enhance">enhance</a>, <a href=
3866
+ "image2.html#median_filter">median_filter</a>, <a href=
3867
+ "image3.html#reduce_noise">reduce_noise</a>, <a href=
3868
+ "#unsharp_mask_channel">unsharp_mask_channel</a></p>
3869
+
3870
+ <h4>Magick API</h4>
3871
+
3872
+ <p>UnsharpMaskImage</p>
3873
+ </div>
3874
+
3875
+ <div class="sig">
3876
+ <h3 id="unsharp_mask_channel">unsharp_mask_channel</h3>
3877
+
3878
+ <p><span class=
3879
+ "arg">img</span>.unsharp_mask_channel(<span class=
3880
+ "arg">radius=0.0</span>, <span class="arg">sigma=1.0</span>,
3881
+ <span class="arg">amount=1.0</span>, <span class=
3882
+ "arg">threshold=0.05</span> [,<span class=
3883
+ "arg">channel</span>...]) -&gt; <em>image</em></p>
3884
+ </div>
3885
+
3886
+ <div class="desc">
3887
+ <h4>Description</h4>
3888
+
3889
+ <p class="imquote">Sharpens an image. We convolve the image
3890
+ with a Gaussian operator of the given <span class=
3891
+ "arg">radius</span> and standard deviation (<span class=
3892
+ "arg">sigma</span>). For reasonable results, <span class=
3893
+ "arg">radius</span> should be larger than <span class=
3894
+ "arg">sigma</span>. Use a radius of 0 and
3895
+ <code>unsharp_mask_channel</code> selects a suitable radius for
3896
+ you.</p>
3897
+
3898
+ <p>Only the specified channels are sharpened.</p>
3899
+
3900
+ <h4>Arguments</h4>
3901
+
3902
+ <p>All arguments are optional.</p>
3903
+
3904
+ <dl>
3905
+ <dt>radius</dt>
3906
+
3907
+ <dd>The radius of the Gaussian operator. The default is
3908
+ 0.0.</dd>
3909
+
3910
+ <dt>sigma</dt>
3911
+
3912
+ <dd>The standard deviation of the Gaussian operator. A good
3913
+ starting value is 1.0, which is the default.</dd>
3914
+
3915
+ <dt>amount</dt>
3916
+
3917
+ <dd>The percentage of the blurred image to be added to the
3918
+ receiver, specified as a fraction between 0 and 1.0. A good
3919
+ starting value is 1.0, which is the default.</dd>
3920
+
3921
+ <dt>threshold</dt>
3922
+
3923
+ <dd>The threshold needed to apply the amount, specified as a
3924
+ fraction between 0 and 1.0. A good starting value is 0.05,
3925
+ which is the default.</dd>
3926
+
3927
+ <dt>channel...</dt>
3928
+
3929
+ <dd>0 or more <a href=
3930
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
3931
+ channels are specified, all the channels are sharpened. This
3932
+ is the equivalent of <a href=
3933
+ "#unsharp_mask">unsharp_mask</a>.</dd>
3934
+ </dl>
3935
+
3936
+ <h4>Returns</h4>
3937
+
3938
+ <p>A new image</p>
3939
+
3940
+ <h4>See also</h4>
3941
+
3942
+ <p><a href="image2.html#enhance">enhance</a>, <a href=
3943
+ "image2.html#median_filter">median_filter</a>, <a href=
3944
+ "image3.html#reduce_noise">reduce_noise</a>, <a href=
3945
+ "#unsharp_mask">unsharp_mask</a></p>
3946
+
3947
+ <h4>Magick API</h4>
3948
+
3949
+ <p>UnsharpMaskImageChannel</p>
3950
+ </div>
3951
+
3952
+ <div class="sig">
3953
+ <h3 id="view">view</h3>
3954
+
3955
+ <p><span class="arg">img</span>.view(<span class=
3956
+ "arg">x</span>, <span class="arg">y</span>, <span class=
3957
+ "arg">width</span>, <span class="arg">height</span>) -&gt;
3958
+ <em>aView</em><br />
3959
+ <span class="arg">img</span>.view(<span class="arg">x</span>,
3960
+ <span class="arg">y</span>, <span class="arg">width</span>,
3961
+ <span class="arg">height</span>) {&nbsp;|view|
3962
+ <em>block</em>&nbsp;} -&gt; <em>nil</em></p>
3963
+ </div>
3964
+
3965
+ <div class="desc">
3966
+ <h4>Description</h4><code>View</code> is a convenience method
3967
+ that supports getting and setting individual image pixels by
3968
+ <code>[i][j]</code> coordinates. With no associated block,
3969
+ <code>view</code> returns an <a href=
3970
+ "struct.html#view">Image::View</a> object. If the optional code
3971
+ block is given, it will be passed the <code>Image::View</code>
3972
+ object as an argument. The <a href=
3973
+ "struct.html#view_sync">sync</a> method will be called
3974
+ automatically when the block terminates. In this case,
3975
+ <code>view</code> returns <code>nil</code>.
3976
+
3977
+ <h4>Arguments</h4>
3978
+
3979
+ <dl>
3980
+ <dt>x, y</dt>
3981
+
3982
+ <dd>The offset of the view from the top-left corner of the
3983
+ image. Within the view, pixels are relative to the top-left
3984
+ corner of the view, <em>not</em> the image.</dd>
3985
+
3986
+ <dt>width, height</dt>
3987
+
3988
+ <dd>The width and height of the view. The view may not extend
3989
+ past the boundaries of <span class="arg">img</span>.</dd>
3990
+ </dl>
3991
+
3992
+ <h4>Returns</h4>
3993
+
3994
+ <p>If the optional code block is present, <code>view</code>
3995
+ returns <code>nil</code>. If it is not present,
3996
+ <code>view</code> returns an <code>Image::View</code>
3997
+ object.</p>
3998
+
3999
+ <h4>See</h4>
4000
+
4001
+ <p><a href="struct.html#view">Image::View</a></p>
4002
+
4003
+ <h4>Examples</h4>
4004
+
4005
+ <p>The example image below has been scaled 500% for
4006
+ clarity.</p>
4007
+
4008
+ <p><a href="javascript:popup('viewex.rb.html')"><img src=
4009
+ "ex/viewex.gif" title="Click to see the example script" alt=
4010
+ "view example" /></a></p>
4011
+ <pre>
4012
+ img = Image.new(40, 40) {self.background_color = 'lightcyan2'}
4013
+
4014
+ # The view is 400 pixels square, starting at
4015
+ # column 10, row 5 from the top of the image.
4016
+ img.view( 10, 5, 20, 20) do |view|
4017
+
4018
+ # Set all the pixels in the view to green.
4019
+ view[][] = Pixel.new(0, QuantumRange)
4020
+
4021
+ # Change the top and bottom rows to red.
4022
+ view[0][] = 'red'
4023
+ view[-1,1][] = 'red'
4024
+
4025
+ # Set 6 pixels to black.
4026
+ view[[13,15]][[12,14,16]] = 'black'
4027
+
4028
+ # Set 1 pixel to yellow.
4029
+ view[5][7] = 'yellow'
4030
+
4031
+ # Change the green channel of all the
4032
+ # pixels on row 8.
4033
+ view[8][].green = QuantumRange/2
4034
+
4035
+ # Change the blue channel of 8 pixels
4036
+ # on column 10.
4037
+ view[4,8][10].blue = QuantumRange
4038
+ end
4039
+ </pre>
4040
+
4041
+ <h4>See also</h4>
4042
+
4043
+ <p><a href="image3.html#pixel_color">pixel_color</a>, <a href=
4044
+ "image2.html#get_pixels">get_pixels</a>, <a href=
4045
+ "#store_pixels">store_pixels</a></p>
4046
+
4047
+ <h4>Notes</h4>
4048
+
4049
+ <p>The <code>view</code> method introduces a relatively high
4050
+ level of overhead to pixel manipulation compared to methods
4051
+ that use the ImageMagick API to identify and change pixels. I
4052
+ recommend that you use <code>view</code> only when the number
4053
+ of pixels identified in the view is fairly small (a few
4054
+ thousand to a few hundred thousand, depending on your patience
4055
+ and the speed of your computer) and you need this degree of
4056
+ control.</p>
4057
+ </div>
4058
+
4059
+ <div class="sig">
4060
+ <h3 id="vignette">vignette</h3>
4061
+
4062
+ <p><span class="arg">img</span>.vignette(<span class=
4063
+ "arg">x</span>, <span class="arg">y</span>, <span class=
4064
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=10.0)
4065
+ -&gt; <span class="arg">image</span></p>
4066
+ </div>
4067
+
4068
+ <div class="desc">
4069
+ <h4>Description</h4>
4070
+
4071
+ <p>Gradually shades the edges of the image by transforming the
4072
+ pixels into the background color.</p>
4073
+
4074
+ <h4>Arguments</h4>
4075
+
4076
+ <dl>
4077
+ <dt>x</dt>
4078
+
4079
+ <dd>Influences the amount of background color in the
4080
+ horizontal dimension. Larger values of <span class=
4081
+ "arg">x</span> make the vignette narrower. This argument
4082
+ should be positive and less than image.columns / 2. This
4083
+ argument is optional. If omitted, the default value is 0.10 *
4084
+ <span class="arg">img</span>.columns.</dd>
4085
+
4086
+ <dt>y</dt>
4087
+
4088
+ <dd>Influences the amount of background color in the vertical
4089
+ dimension. Larger values of <span class="arg">y</span> make
4090
+ the vignette shorter. This argument should be positive and
4091
+ less than image.rows / 2. This argument is optional. If
4092
+ omitted, the default value is 0.10 * <span class=
4093
+ "arg">img</span>.rows.</dd>
4094
+
4095
+ <dt>radius, sigma</dt>
4096
+
4097
+ <dd>Controls the amount of blurring. Larger values of
4098
+ <span class="arg">sigma</span> increase the blurring at the
4099
+ expense of increased execution time. In general, <span class=
4100
+ "arg">radius</span> should be larger than <span class=
4101
+ "arg">sigma</span>, although if <span class=
4102
+ "arg">radius</span> is 0 then ImageMagick will choose a
4103
+ suitable value. <span class="arg">Sigma</span> must be
4104
+ non-zero. Choose a very small value for <span class=
4105
+ "arg">sigma</span> to produce a "hard" edge.</dd>
4106
+ </dl>
4107
+
4108
+ <h4>Returns</h4>
4109
+
4110
+ <p>A new image</p>
4111
+
4112
+ <h4>Example</h4>
4113
+
4114
+ <p class="rollover"><a href=
4115
+ "javascript:popup('vignette.rb.html')"><img src=
4116
+ "ex/vignette.jpg" alt="vignette example" title=
4117
+ "Click to see the example script" onmouseover=
4118
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
4119
+ "this.src='ex/vignette.jpg'" /></a> <img src=
4120
+ "ex/images/spin.gif" alt="" class="spin" title=
4121
+ "Mouse over the example to see the original image" /></p>
4122
+
4123
+ <h4>Magick API</h4>
4124
+
4125
+ <p>VignetteImage</p>
4126
+
4127
+ <h4>Notes</h4>
4128
+
4129
+ <p>The image produced by <code>vignette</code> is very similar
4130
+ to the image produced by RMagick's vignette.rb example script.
4131
+ However, the example script gives you more control over the
4132
+ size, shape, and background color of the vignette.</p>
4133
+ </div>
4134
+
4135
+ <div class="sig">
4136
+ <h3 id="watermark">watermark</h3>
4137
+
4138
+ <p><span class="arg">img</span>.watermark(<span class=
4139
+ "arg">mark</span>, <span class="arg">lightness</span>=1.0,
4140
+ <span class="arg">saturation</span>=1.0, <span class=
4141
+ "arg">x_offset</span>=0, <span class="arg">y_offset</span>=0)
4142
+ -&gt; <em>image</em><br />
4143
+ <span class="arg">img</span>.watermark(<span class=
4144
+ "arg">mark</span>, <span class="arg">lightness</span>=1.0,
4145
+ <span class="arg">saturation</span>=1.0, <span class=
4146
+ "arg">gravity</span>, <span class="arg">x_offset</span>=0,
4147
+ <span class="arg">y_offset</span>=0) -&gt; <em>image</em></p>
4148
+ </div>
4149
+
4150
+ <div class="desc">
4151
+ <h4>Description</h4>
4152
+
4153
+ <p>Composites a watermark image on the target image using the
4154
+ <a href="constants.html#CompositeOperator">Modulate</a>
4155
+ composite operator. This composite operation operates in the
4156
+ HSL colorspace and combines part of the lightness, part of the
4157
+ saturation, and all of the hue of each pixel in the watermark
4158
+ with the corresponding pixel in the target image</p>
4159
+
4160
+ <h4>Arguments</h4>
4161
+
4162
+ <dl>
4163
+ <dt>mark</dt>
4164
+
4165
+ <dd>The watermark image. Either an imagelist or an image. If
4166
+ an imagelist, uses the current image.</dd>
4167
+
4168
+ <dt>lightness</dt>
4169
+
4170
+ <dd>The fraction of the lightness component of the watermark
4171
+ pixels to be composited onto the target image. Must be a
4172
+ non-negative number or a string in the form "NN%". If
4173
+ lightness is a number it is interpreted as a percentage. Both
4174
+ 0.25 and "25%" mean 25%. The default is 100%.</dd>
4175
+
4176
+ <dt>saturation</dt>
4177
+
4178
+ <dd>The fraction of the saturation component of the watermark
4179
+ pixels to be composited onto the target image. Must be a
4180
+ non-negative number or a string in the form "NN%". If
4181
+ lightness is a number it is interpreted as a percentage. Both
4182
+ 0.25 and "25%" mean 25%. The default is 100%.</dd>
4183
+
4184
+ <dt>x_offset</dt>
4185
+
4186
+ <dd>The offset of the watermark, measured from the left-hand
4187
+ side of the target image. The default is 0.</dd>
4188
+
4189
+ <dt>y_offset</dt>
4190
+
4191
+ <dd>The offset of the watermark, measured from the top of the
4192
+ target image. The default is 0.</dd>
4193
+ </dl>
4194
+
4195
+ <p>Watermark can be called with a <span class=
4196
+ "arg">gravity</span> argument or without. When a <span class=
4197
+ "arg">gravity</span> argument is specified but the <span class=
4198
+ "arg">x-</span> and <span class="arg">y-offsets</span> are
4199
+ omitted, the watermark is positioned based on the value of the
4200
+ <span class="arg">gravity</span> argument:</p>
4201
+
4202
+ <dl>
4203
+ <dt>NorthWestGravity</dt>
4204
+
4205
+ <dd>The watermark abuts the top and left sides of the
4206
+ image.</dd>
4207
+
4208
+ <dt>NorthGravity</dt>
4209
+
4210
+ <dd>The watermark is centered left-to-right and abuts the top
4211
+ of the image.</dd>
4212
+
4213
+ <dt>NorthEastGravity</dt>
4214
+
4215
+ <dd>The watermark abuts the top and right sides of the
4216
+ image.</dd>
4217
+
4218
+ <dt>EastGravity</dt>
4219
+
4220
+ <dd>The watermark is centered top-to-bottom and abuts the
4221
+ right side of the image.</dd>
4222
+
4223
+ <dt>SouthEastGravity</dt>
4224
+
4225
+ <dd>The watermark abuts the bottom and right sides of the
4226
+ image.</dd>
4227
+
4228
+ <dt>SouthGravity</dt>
4229
+
4230
+ <dd>The watermark is centered left-to-right and abuts the
4231
+ bottom of the image.</dd>
4232
+
4233
+ <dt>SouthWestGravity</dt>
4234
+
4235
+ <dd>The watermark abuts the bottom and left sides of the
4236
+ image.</dd>
4237
+
4238
+ <dt>WestGravity</dt>
4239
+
4240
+ <dd>The watermark is centered top-to-bottom and abuts the
4241
+ left side of the image.</dd>
4242
+
4243
+ <dt>CenterGravity</dt>
4244
+
4245
+ <dd>The watermark is centered left-to-right and
4246
+ top-to-bottom.</dd>
4247
+ </dl>
4248
+
4249
+ <p>When the <span class="arg">gravity</span> argument is
4250
+ present and the <span class="arg">x-offset</span> (and
4251
+ optionally the <span class="arg">y-offset</span>) is present,
4252
+ the <span class="arg">x-</span> and <span class=
4253
+ "arg">y-offset</span> are measured from the right and/or bottom
4254
+ edges of the target image based on the value of <span class=
4255
+ "arg">gravity</span>. If the argument is NorthEastGravity,
4256
+ EastGravity, or SouthEastGravity, the <span class=
4257
+ "arg">x-offset</span> is measured from the right side of the
4258
+ image. If the argument is SouthEastGravity, SouthGravity, or
4259
+ SouthWestGravity, the <span class="arg">y-offset</span> is
4260
+ measured from the bottom of the image. All other values are
4261
+ ignored and the <span class="arg">x-</span> and <span class=
4262
+ "arg">y-offset</span> are measured from the upper-left corner
4263
+ of the image.</p>
4264
+
4265
+ <h4>Returns</h4>
4266
+
4267
+ <p>A new image</p>
4268
+
4269
+ <h4>Example</h4>
4270
+
4271
+ <p>See <a href=
4272
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/annotating/#wmark_image">
4273
+ "Watermarking with Images"</a> in Anthony Thyssen's <a href=
4274
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/"><cite>Examples
4275
+ of ImageMagick Usage</cite></a>.</p>
4276
+
4277
+ <p class="rollover"><a href=
4278
+ "javascript:popup('watermark.rb.html')"><img src=
4279
+ "ex/watermark.jpg" alt="watermark example" title=
4280
+ "Click to see the example script" onmouseover=
4281
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
4282
+ "this.src='ex/watermark.jpg'" /></a> <img src=
4283
+ "ex/images/spin.gif" alt="" class="spin" title=
4284
+ "Mouse over the example to see the original image" /></p>
4285
+
4286
+ <h4>See also</h4>
4287
+
4288
+ <p><a href="image1.html#composite">composite</a>, <a href=
4289
+ "#stegano">stegano</a></p>
4290
+ </div>
4291
+
4292
+ <div class="sig">
4293
+ <h3 id="wave">wave</h3>
4294
+
4295
+ <p><span class="arg">img</span>.wave(<span class=
4296
+ "arg">amplitude</span>=25.0, <span class=
4297
+ "arg">wavelength</span>=150.0) -&gt; <em>image</em></p>
4298
+ </div>
4299
+
4300
+ <div class="desc">
4301
+ <h4>Description</h4>
4302
+
4303
+ <p class="imquote">Creates a "ripple" effect in the image by
4304
+ shifting the pixels vertically along a sine wave whose
4305
+ <span class="arg">amplitude</span> and <span class=
4306
+ "arg">wavelength</span> is specified by the given
4307
+ parameters.</p>
4308
+
4309
+ <h4>Returns</h4>
4310
+
4311
+ <p>A new image</p>
4312
+
4313
+ <h4>Example</h4>
4314
+
4315
+ <p class="rollover"><a href="javascript:popup('wave.rb.html')">
4316
+ <!-- This img tag displays the original image when the mouse is over -->
4317
+ <img style=
4318
+ "padding-top:25px; padding-bottom:25px; display:none" id=
4319
+ "nowave" title="Click to see the example script" onmouseout=
4320
+ "this.style.display='none'; waved.style.display='';" src=
4321
+ "ex/images/Flower_Hat.jpg" alt="wave example" /> <!--
4322
+ This img tag displays the framed image when the mouse is not over
4323
+ --><img class="hide"
4324
+ id="waved" onmouseover=
4325
+ "this.style.display='none'; nowave.style.display='';" src=
4326
+ "ex/wave.jpg" alt="wave example" /></a> <img src=
4327
+ "ex/images/spin.gif" alt="" class="spin" title=
4328
+ "Mouse over the example to see the original image" /></p>
4329
+
4330
+ <h4>Magick API</h4>
4331
+
4332
+ <p>WaveImage</p>
4333
+
4334
+ <h4>See also</h4>
4335
+
4336
+ <p><a href=
4337
+ "imageattrs.html#virtual_pixel_method">virtual_pixel_method</a></p>
4338
+ </div>
4339
+
4340
+ <div class="sig">
4341
+ <h3 id="wet_floor">wet_floor</h3>
4342
+
4343
+ <p><span class="arg">img</span>.wet_floor(<span class=
4344
+ "arg">initial=0.5</span>, <span class="arg">rate=1.0</span>)
4345
+ -&gt; <em>image</em></p>
4346
+ </div>
4347
+
4348
+ <div class="desc">
4349
+ <h4>Description</h4>
4350
+
4351
+ <p>Creates a <a href=
4352
+ "http://en.wikipedia.org/wiki/Wet_floor_effect">"wet floor"</a>
4353
+ reflection. The reflection is an inverted copy of the image
4354
+ that changes from partially transparent to entirely
4355
+ transparent. By default only the bottom third of the image
4356
+ appears in the reflection.</p>
4357
+
4358
+ <p>Note that the output image is just the reflection. This
4359
+ makes it easy to apply further transformations to the
4360
+ reflection before combining it with the original image.</p>
4361
+
4362
+ <h4>Arguments</h4>
4363
+
4364
+ <dl>
4365
+ <dt>initial</dt>
4366
+
4367
+ <dd>A value between 0.0 and 1.0 that specifies the initial
4368
+ percentage of transparency. Higher values cause the top of
4369
+ the reflection to be more transparent, lower values less
4370
+ transparent. The default is 0.5, which means that the top of
4371
+ the reflection is 50% transparent.</dd>
4372
+
4373
+ <dt>rate</dt>
4374
+
4375
+ <dd>A non-negative value that specifies how rapidly the
4376
+ reflection transitions from the initial level of transparency
4377
+ to entirely transparent. The default value is 1.0, which
4378
+ means that the transition occurs in 1/3 the image height.
4379
+ Values greater than 1.0 speed up the transition (the
4380
+ reflection will have fewer rows), values lower than 1.0 slow
4381
+ down the transition (the reflection will have more rows). A
4382
+ value of 0.0 means that the level of transparency will not
4383
+ change.</dd>
4384
+ </dl>
4385
+
4386
+ <h4>Returns</h4>
4387
+
4388
+ <p>A new image</p>
4389
+
4390
+ <h4>Example</h4>
4391
+
4392
+ <p>Here are four examples of <code>wet_floor</code>. The top
4393
+ image shows the result of appending the default reflection to
4394
+ the original image. The second image shows the result of
4395
+ decreasing the initial transparency to 0.25 and using 0.5 as
4396
+ the <span class="arg">rate</span> argument. The third image
4397
+ uses the same reflection as the second image but has a slant
4398
+ added. The bottom image is the same as the third image but with
4399
+ a ripple effect.</p>
4400
+
4401
+ <p><a href="javascript:popup('wet_floor.rb.html')"><img src=
4402
+ "ex/wet_floor.gif" title="Click to see the example script" alt=
4403
+ "wet floor example" /></a></p>
4404
+ </div>
4405
+
4406
+ <div class="sig">
4407
+ <h3 id="white_threshold">white_threshold</h3>
4408
+
4409
+ <p><span class="arg">img</span>.white_threshold(<span class=
4410
+ "arg">red_channel</span> [, <span class=
4411
+ "arg">green_channel</span>[, <span class=
4412
+ "arg">blue_channel</span>[, <span class=
4413
+ "arg">opacity_channel</span>]]]) -&gt; <em>image</em></p>
4414
+ </div>
4415
+
4416
+ <div class="desc">
4417
+ <h4>Description</h4>
4418
+
4419
+ <p class="imquote">Forces all pixels above the threshold into
4420
+ white while leaving all pixels below the threshold
4421
+ unchanged.</p>
4422
+
4423
+ <h4>Arguments</h4>
4424
+
4425
+ <p>Each channel argument is a number between 0 and
4426
+ QuantumRange. All arguments except the first may be omitted. If
4427
+ the <span class="arg">green_channel</span> or <span class=
4428
+ "arg">blue_channel</span> argument is omitted, the default
4429
+ value is the <span class="arg">red_channel</span> value. If the
4430
+ <span class="arg">opacity_channel</span> argument is omitted,
4431
+ the default value is <a href=
4432
+ "constants.html#Opacity">OpaqueOpacity</a>.</p>
4433
+
4434
+ <h4>Returns</h4>
4435
+
4436
+ <p>A new image</p>
4437
+
4438
+ <h4>See also</h4>
4439
+
4440
+ <p><a href="image1.html#black_threshold">black_threshold</a>,
4441
+ <a href="image1.html#bilevel_channel">bilevel_channel</a></p>
4442
+
4443
+ <h4>Magick API</h4>
4444
+
4445
+ <p>WhiteThresholdImage</p>
4446
+ </div>
4447
+
4448
+ <div class="sig">
4449
+ <h3 id="write">write</h3>
4450
+
4451
+ <p><span class="arg">img</span>.write(<span class=
4452
+ "arg">filename</span>) <span class="arg">[ { optional arguments
4453
+ } ]</span> -&gt; <em>self</em><br />
4454
+ <span class="arg">img</span>.write(<span class=
4455
+ "arg">file</span>) <span class="arg">[ { optional arguments }
4456
+ ]</span> -&gt; <em>self</em></p>
4457
+ </div>
4458
+
4459
+ <div class="desc">
4460
+ <h4>Description</h4>
4461
+
4462
+ <p>Writes the image to the specified file. ImageMagick
4463
+ determines image format from the <a href=
4464
+ "imusage.html#formats">prefix or extension</a>.</p>
4465
+
4466
+ <p>If the argument is an open file, ImageMagick will write the
4467
+ image in its current format. You can force a different format
4468
+ by setting the image's <a href=
4469
+ "imageattrs.html#Image.format">format</a> attribute.</p>
4470
+
4471
+ <h4>Arguments</h4>
4472
+
4473
+ <p>A file name or open file object. You may also specify
4474
+ optional arguments by setting <a href=
4475
+ "info.html">Image::Info</a> attributes in an associated
4476
+ block.</p>
4477
+
4478
+ <h4>Returns</h4>
4479
+
4480
+ <p><code>self</code>, or <code>nil</code> if the image format
4481
+ cannot be determined.</p>
4482
+
4483
+ <h4>Example</h4>
4484
+
4485
+ <p>Almost all of the examples call <code>write</code>.</p>
4486
+
4487
+ <h4>Notes</h4>
4488
+
4489
+ <p>When the argument is a filename, specify the output format
4490
+ via the filename extension (for example ".jpg" or ".gif") or by
4491
+ prefixing the filename with the desired format (for example,
4492
+ "jpeg:myfile"), not via <code>format=</code>.</p>
4493
+
4494
+ <p><em>Do not</em> use a StringIO object or a Tempfile object
4495
+ as the argument. Neither of these work. Use
4496
+ <code>to_blob</code> to write to a String. Instead of a
4497
+ tempfile, get the path of the tempfile from the
4498
+ <code>path</code> method. Prefix the path with the desired
4499
+ image format. For example,</p>
4500
+ <pre>
4501
+ temp = Tempfile.new("image")
4502
+ img.write("jpeg:"+ temp.path)
4503
+ </pre>
4504
+
4505
+ <h4>See also</h4>
4506
+
4507
+ <p><a href="ilist.html#write">ImageList#write</a></p>
4508
+
4509
+ <h4>Magick API</h4>
4510
+
4511
+ <p>WriteImage</p>
4512
+ </div>
4513
+
4514
+ <p class="spacer">&nbsp;</p>
4515
+
4516
+ <div class="nav">
4517
+ &laquo;&nbsp;<a href="image2.html">Prev</a> | <a href=
4518
+ "index.html">Contents</a> | <a href=
4519
+ "draw.html">Next</a>&nbsp;&raquo;
4520
+ </div>
4521
+ </body>
4522
+ </html>