rmagick 1.13.0 → 1.14.0

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

Potentially problematic release.


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

Files changed (48) hide show
  1. data/ChangeLog +34 -0
  2. data/README.html +12 -29
  3. data/README.txt +10 -26
  4. data/configure +768 -73
  5. data/configure.ac +29 -26
  6. data/doc/comtasks.html +3 -4
  7. data/doc/constants.html +85 -67
  8. data/doc/draw.html +22 -0
  9. data/doc/ex/dissolve.rb +13 -0
  10. data/doc/ex/edge.rb +1 -1
  11. data/doc/ex/mask.rb +37 -0
  12. data/doc/ex/sketch.rb +25 -0
  13. data/doc/ex/watermark.rb +23 -0
  14. data/doc/ilist.html +11 -13
  15. data/doc/image1.html +601 -52
  16. data/doc/image2.html +637 -28
  17. data/doc/image3.html +339 -54
  18. data/doc/imageattrs.html +211 -41
  19. data/doc/imusage.html +41 -2
  20. data/doc/index.html +8 -6
  21. data/doc/info.html +57 -42
  22. data/doc/optequiv.html +1919 -0
  23. data/doc/rvg.html +45 -42
  24. data/doc/scripts/doc.js +14 -1
  25. data/doc/scripts/stripeTables.js +23 -0
  26. data/doc/usage.html +66 -15
  27. data/{doc/ex → examples}/demo.rb +0 -0
  28. data/examples/find_similar_region.rb +34 -0
  29. data/examples/import_export.rb +1 -1
  30. data/examples/pattern_fill.rb +2 -2
  31. data/examples/rotating_text.rb +2 -4
  32. data/examples/thumbnail.rb +1 -1
  33. data/ext/RMagick/MANIFEST +9 -4
  34. data/ext/RMagick/extconf.rb.in +1 -1
  35. data/ext/RMagick/rmagick.h +47 -10
  36. data/ext/RMagick/rmagick_config.h.in +24 -0
  37. data/ext/RMagick/rmdraw.c +32 -7
  38. data/ext/RMagick/rmilist.c +55 -37
  39. data/ext/RMagick/rmimage.c +1588 -447
  40. data/ext/RMagick/rminfo.c +94 -3
  41. data/ext/RMagick/rmmain.c +68 -7
  42. data/ext/RMagick/rmutil.c +67 -9
  43. data/lib/RMagick.rb +190 -53
  44. data/lib/rvg/stretchable.rb +17 -13
  45. data/rmagick.gemspec +1 -1
  46. metadata +11 -6
  47. data/doc/ex/level_channel.rb +0 -33
  48. data/doc/ex/opaque.rb +0 -14
@@ -231,6 +231,8 @@
231
231
 
232
232
  <li><a href="#text_antialias_eq">text_antialias</a></li>
233
233
 
234
+ <li><a href="#tile_eq">tile</a></li>
235
+
234
236
  <li><a href="#undercolor_eq">undercolor</a></li>
235
237
  </ul>
236
238
  </div>
@@ -3079,6 +3081,26 @@ gc.text(10,10, %q/{"What's up?"}/) &raquo; "What's up?"
3079
3081
  <p>self</p>
3080
3082
  </div>
3081
3083
 
3084
+ <div class="sig">
3085
+ <h3 id="tile_eq">tile=</h3>
3086
+
3087
+ <p><span class="arg">draw</span>.tile = <em>anImage</em></p>
3088
+ </div>
3089
+
3090
+ <div class="desc">
3091
+ <h4>Description</h4>
3092
+
3093
+ <p>Tile image when filling a graphic primitive.</p>
3094
+
3095
+ <h4>Arguments</h4>
3096
+
3097
+ <p>An image</p>
3098
+
3099
+ <h4>Returns</h4>
3100
+
3101
+ <p>self</p>
3102
+ </div>
3103
+
3082
3104
  <div class="sig">
3083
3105
  <h3 id="undercolor_eq">undercolor=</h3>
3084
3106
 
@@ -0,0 +1,13 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ bgnd = Magick::Image.read('images/Violin.jpg').first
6
+ overlay = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ # Make the violin image the same size as the hat image
9
+ bgnd.crop_resized!(overlay.columns, overlay.rows)
10
+
11
+ composited = bgnd.dissolve(overlay, 0.50)
12
+ composited.write('dissolve.jpg')
13
+
@@ -4,7 +4,7 @@ require 'RMagick'
4
4
  # Demonstrate the Image#edge method
5
5
 
6
6
  img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
7
+ img = img.quantize(256, Magick::GRAYColorspace)
8
8
  img = img.edge(5)
9
9
 
10
10
  img.write('edge.jpg')
@@ -0,0 +1,37 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ # This example demonstrates the mask attribute. The mask image must
6
+ # be the same size as the image being masked. Since this mask image does
7
+ # not have an alpha channel, the intensity of each pixel is used to define the
8
+ # mask. White pixels are more intense than black pixels, so the area of the
9
+ # image masked by white pixels will remain unchanged, while the area of the
10
+ # image masked by black pixels is affected by any transformations.
11
+
12
+ # In this example the mask is simply the words "Flower Hat" in black text
13
+ # positioned near the bottom of the white clip mask image.
14
+
15
+ img = Magick::Image.read("images/Flower_Hat.jpg").first
16
+ q = Magick::Image.new(img.columns, img.rows)
17
+
18
+ gc = Magick::Draw.new
19
+ gc.annotate(q, 0, 0, 0, 0, "Flower Hat") do
20
+ gc.gravity = Magick::SouthGravity
21
+ gc.font_family = "Helvetica"
22
+ gc.pointsize = 36
23
+ gc.font_weight = Magick::BoldWeight
24
+ end
25
+
26
+ # Set the matte attribute to false, indicating the absence of an alpha channel
27
+ # in the mask image. Assign the mask image to the mask= attribute of the image
28
+ # being masked.
29
+
30
+ q.matte = false
31
+ img.mask = q
32
+
33
+ # Use the #level method to darken the image under the black part of the mask.
34
+
35
+ img = img.level(0, Magick::MaxRGB, 0.50)
36
+ img.write('mask.jpg')
37
+
@@ -0,0 +1,25 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
6
+
7
+ # Convert to grayscale
8
+ sketch = img.quantize(256, Magick::GRAYColorspace)
9
+
10
+ # Apply histogram equalization
11
+ sketch = sketch.equalize
12
+
13
+ # Sketch, then dissolve 25% of the original back in
14
+ begin
15
+ sketch = sketch.sketch(0, 10, 135)
16
+ img = img.dissolve(sketch, 0.75, 0.25)
17
+
18
+ rescue NotImplementedError
19
+ not_impl = Magick::Image.read('images/notimplemented.gif').first
20
+ not_impl.resize!(img.columns, img.rows)
21
+ img = not_impl
22
+ end
23
+
24
+ img.write('sketch.jpg')
25
+
@@ -0,0 +1,23 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require "RMagick"
4
+
5
+ img = Magick::Image.read("images/Flower_Hat.jpg").first
6
+
7
+ # Make a watermark from the word "RMagick"
8
+ mark = Magick::Image.new(140, 40) {self.background_color = "none"}
9
+ gc = Magick::Draw.new
10
+ gc.annotate(mark, 0, 0, 0, -5, "RMagick") do
11
+ gc.gravity = Magick::CenterGravity
12
+ gc.pointsize = 32
13
+ gc.font_family = "Times"
14
+ gc.fill = "white"
15
+ gc.stroke = "none"
16
+ end
17
+
18
+ mark = mark.wave(2.5, 70).rotate(-90)
19
+
20
+ # Composite the watermark in the lower right (southeast) corner.
21
+ img2 = img.watermark(mark, 0.25, 0, Magick::SouthEastGravity)
22
+ img2.write("watermark.jpg")
23
+
@@ -383,8 +383,8 @@ imagelist.ticks_per_second = 1000
383
383
  <h4>Example</h4>
384
384
 
385
385
  <p>Add noise to a model image. Append the resulting image to
386
- the imagelist in "example". (See: <a href=
387
- "javascript:popup('demo.rb.html')">demo.rb</a>)</p>
386
+ the imagelist in "example". (See the <code>demo.rb</code>
387
+ example.)</p>
388
388
  <pre>
389
389
  example = Magick::ImageList.new
390
390
  model = Magick::ImageList.new "model.miff"
@@ -533,16 +533,17 @@ imagelist.animate { self.server_name = "other:0.0" }
533
533
  <img style="display:none" id="notaveraged" onmouseout=
534
534
  "this.style.display='none'; averaged.style.display=''; averagedspin.style.display='';"
535
535
  title="Click to see the example script" src=
536
- "ex/average_before.gif" alt="average example" /><!--
536
+ "ex/average_before.gif" alt="average example"
537
+ /><!--
537
538
  This img tag displays the averaged image when the mouse is not over
538
539
  --><img style="display:" id=
539
540
  "averaged" onmouseover=
540
541
  "this.style.display='none'; notaveraged.style.display=''; averagedspin.style.display='none';"
541
542
  src="ex/average_after.gif" alt="average example"
542
- /></a> <img src="ex/images/spin.gif" alt="" class=
543
+ /></a> <img src="ex/images/spin.gif" alt="" class=
543
544
  "spin" style="left:131px; display:" id="averagedspin" title=
544
545
  "Mouse over the example to see the 3 original images"
545
- /></p>
546
+ /></p>
546
547
 
547
548
  <h4>Magick API</h4>
548
549
 
@@ -1135,6 +1136,10 @@ self.tile = Magick::Geometry.new(4,10)
1135
1136
  on one composite image, <code>montage</code> creates
1136
1137
  multiple composite images.</p>
1137
1138
  </dd>
1139
+
1140
+ <dt>title=</dt>
1141
+
1142
+ <dd>Adds a title over the whole montage.</dd>
1138
1143
  </dl>
1139
1144
 
1140
1145
  <h4>Tile labels</h4>
@@ -1153,12 +1158,6 @@ img[2]['Label'] = "Mom's Birthday"
1153
1158
  <p>An imagelist that contains as many images as are required to
1154
1159
  display all the tiles.</p>
1155
1160
 
1156
- <h4>Example</h4><a href=
1157
- "javascript:popup('demo.rb.html')">demo.rb</a>
1158
-
1159
- <h4>Example</h4><a href=
1160
- "javascript:popup('demo.rb.html')">demo.rb</a>
1161
-
1162
1161
  <h4>Magick API</h4>
1163
1162
 
1164
1163
  <p>MontageImages</p>
@@ -1580,8 +1579,7 @@ number = '0'
1580
1579
  end
1581
1580
  </pre>
1582
1581
 
1583
- <p>Also see the <a href="#morph">morph</a> example and <a href=
1584
- "javascript:popup('demo.rb.html')">demo.rb</a>.</p>
1582
+ <p>Also see the morph.rb example and the demo.rb example.</p>
1585
1583
 
1586
1584
  <h4>See also</h4>
1587
1585
 
@@ -92,6 +92,13 @@ float: left;
92
92
 
93
93
  <li><a href="#spaceship">&lt;=&gt;</a></li>
94
94
 
95
+ <li><a href="#adaptive_blur">adaptive_blur</a></li>
96
+
97
+ <li><a href=
98
+ "#adaptive_blur_channel">adaptive_blur_channel</a></li>
99
+
100
+ <li><a href="#adaptive_resize">adaptive_resize</a></li>
101
+
95
102
  <li><a href="#adaptive_sharpen">adaptive_sharpen</a></li>
96
103
 
97
104
  <li><a href=
@@ -102,6 +109,8 @@ float: left;
102
109
 
103
110
  <li><a href="#add_noise">add_noise</a></li>
104
111
 
112
+ <li><a href="#add_profile">add_profile</a></li>
113
+
105
114
  <li><a href=
106
115
  "#add_noise_channel">add_noise_channel</a></li>
107
116
 
@@ -117,22 +126,24 @@ float: left;
117
126
 
118
127
  <li><a href="#black_threshold">black_threshold</a></li>
119
128
 
129
+ <li><a href="#blend">blend</a></li>
130
+
120
131
  <li><a href="#blur_channel">blur_channel</a></li>
121
132
 
122
133
  <li><a href="#blur_image">blur_image</a></li>
123
134
 
124
135
  <li><a href="#border">border</a></li>
136
+ </ul>
137
+ </div>
125
138
 
139
+ <div class="toccol">
140
+ <ul>
126
141
  <li><a href="#border_bang">border!</a></li>
127
142
 
128
143
  <li><a href="#change_geometry">change_geometry</a></li>
129
144
 
130
145
  <li><a href="#changed_q">changed?</a></li>
131
- </ul>
132
- </div>
133
146
 
134
- <div class="toccol">
135
- <ul>
136
147
  <li><a href="#channel">channel</a></li>
137
148
 
138
149
  <li><a href="#channel_depth">channel_depth</a></li>
@@ -198,19 +209,28 @@ float: left;
198
209
 
199
210
  <li><a href="#cycle_colormap">cycle_colormap</a></li>
200
211
 
212
+ <li><a href="#delete_profile">delete_profile</a></li>
213
+
201
214
  <li><a href="#despeckle">despeckle</a></li>
202
215
 
203
216
  <li><a href="#difference">difference</a></li>
204
217
 
205
218
  <li><a href="#dispatch">dispatch</a></li>
206
219
 
220
+ <li><a href="#displace">displace</a></li>
221
+
207
222
  <li><a href="#display">display</a></li>
208
223
 
224
+ <li><a href="#dissolve">dissolve</a></li>
225
+
209
226
  <li><a href=
210
227
  "#distortion_channel">distortion_channel</a></li>
211
228
 
212
229
  <li><a href="#dup">dup</a></li>
213
230
 
231
+ <li><a href=
232
+ "#each_iptc_dataset">each_iptc_dataset</a></li>
233
+
214
234
  <li><a href="#each_profile">each_profile</a></li>
215
235
 
216
236
  <li><a href="#edge">edge</a></li>
@@ -724,6 +744,166 @@ img = Magick::Image.read_inline(content)
724
744
  <p>SignatureImage</p>
725
745
  </div>
726
746
 
747
+ <div class="sig">
748
+ <h3 id="adaptive_blur">adaptive_blur</h3>
749
+
750
+ <p><span class="arg">image</span>.adaptive_blur(<span class=
751
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=1.0)
752
+ -&gt; <em>anImage</em></p>
753
+ </div>
754
+
755
+ <div class="desc">
756
+ <h4>Description</h4>
757
+
758
+ <p><span class="imquote">Adaptively blurs the image by bluring
759
+ more intensely near image edges and less intensely far from
760
+ edges.</span> The adaptive_blur method blurs <span class=
761
+ "imquote">the image with a Gaussian operator of the
762
+ given</span> <span class="arg">radius</span> <span class=
763
+ "imquote">and standard deviation</span> (<span class=
764
+ "arg">sigma</span>). <span class="imquote">For reasonable
765
+ results,</span> <span class="arg">radius</span> <span class=
766
+ "imquote">should be larger than</span> <span class=
767
+ "arg">sigma</span>. <span class="imquote">Use a</span>
768
+ <span class="arg">radius</span> <span class="imquote">of 0 and
769
+ adaptive_blur selects a suitable</span> <span class=
770
+ "arg">radius</span> <span class="imquote">for you.</span></p>
771
+
772
+ <h4>Arguments</h4>
773
+
774
+ <dl>
775
+ <dt>radius</dt>
776
+
777
+ <dd><span class="imquote">The radius of the Gaussian in
778
+ pixels, not counting the center pixel.</span> The default is
779
+ 0.0.</dd>
780
+
781
+ <dt>sigma</dt>
782
+
783
+ <dd><span class="imquote">The standard deviation of the
784
+ Laplacian, in pixels.</span> The default is 1.0.</dd>
785
+ </dl>
786
+
787
+ <h4>Returns</h4>
788
+
789
+ <p>A new image</p>
790
+
791
+ <h4>See also</h4>
792
+
793
+ <p><a href=
794
+ "#adaptive_blur_channel">adaptive_blur_channel</a></p>
795
+
796
+ <h4>Magick API</h4>
797
+
798
+ <p>AdaptiveBlurImage (available in ImageMagick 6.2.8)</p>
799
+ </div>
800
+
801
+ <div class="sig">
802
+ <h3 id="adaptive_blur_channel">adaptive_blur_channel</h3>
803
+
804
+ <p><span class="arg">image</span>.adaptive_blur(<span class=
805
+ "arg">radius</span>=0.0, <span class="arg">sigma</span>=1.0
806
+ [,<span class="arg">channel</span>...]) -&gt;
807
+ <em>anImage</em></p>
808
+ </div>
809
+
810
+ <div class="desc">
811
+ <h4>Description</h4>
812
+
813
+ <p>The same as <code>adaptive_blur</code> except only the
814
+ specified channels are blurred.</p>
815
+
816
+ <h4>Arguments</h4>
817
+
818
+ <dl>
819
+ <dt>radius</dt>
820
+
821
+ <dd><span class="imquote">The radius of the Gaussian in
822
+ pixels, not counting the center pixel.</span> The default is
823
+ 0.0.</dd>
824
+
825
+ <dt>sigma</dt>
826
+
827
+ <dd><span class="imquote">The standard deviation of the
828
+ Laplacian, in pixels.</span> The default is 1.0.</dd>
829
+
830
+ <dt>channel...</dt>
831
+
832
+ <dd>0 or more <a href=
833
+ "constants.html#ChannelType">ChannelType</a> arguments. If no
834
+ channels are specified, blurs all the channels. Specifying no
835
+ channel arguments has the same effect as the
836
+ <code>adaptive_blur</code> method, above.</dd>
837
+ </dl>
838
+
839
+ <h4>Returns</h4>
840
+
841
+ <p>A new image</p>
842
+
843
+ <h4>See also</h4>
844
+
845
+ <p><a href="#adaptive_blur">adaptive_blur</a></p>
846
+
847
+ <h4>Magick API</h4>
848
+
849
+ <p>AdaptiveBlurImageChannel (available in ImageMagick
850
+ 6.2.8)</p>
851
+ </div>
852
+
853
+ <div class="sig">
854
+ <h3 id="adaptive_resize">adaptive_resize</h3>
855
+
856
+ <p><span class="arg">image</span>.adaptive_resize(<span class=
857
+ "arg">new_width</span>, <span class="arg">new_height</span>)
858
+ -&gt; <em>anImage</em><br />
859
+ <span class="arg">image</span>.adaptive_resize(<span class=
860
+ "arg">scale_factor</span>) -&gt; <span class=
861
+ "arg">anImage</span></p>
862
+ </div>
863
+
864
+ <div class="desc">
865
+ <h4>Description</h4>
866
+
867
+ <p>Resizes the image with data dependent triangulation.</p>
868
+
869
+ <h4>Arguments</h4>
870
+
871
+ <p>You can specify the new size in two ways. Either specify the
872
+ new width and height explicitly, or specify a <em>scale
873
+ factor</em>, a number that represents the percentage
874
+ change.</p>
875
+
876
+ <p>Use the <a href="#change_geometry">change_geometry</a>
877
+ method to compute new dimensions for an image with constraints
878
+ such as "maintain the current proportions."</p>
879
+
880
+ <dl>
881
+ <dt>new_width, new_height</dt>
882
+
883
+ <dd>The desired width and height.</dd>
884
+
885
+ <dt>scale_factor</dt>
886
+
887
+ <dd>You can use this argument instead of specifying the
888
+ desired width and height. The percentage size change. For
889
+ example, 1.25 makes the new image 125% of the size of the
890
+ receiver. The scale factor 0.5 makes the new image 50% of the
891
+ size of the receiver.</dd>
892
+ </dl>
893
+
894
+ <h4>Returns</h4>
895
+
896
+ <p>A new image</p>
897
+
898
+ <h4>See also</h4>
899
+
900
+ <p><a href="#resize">resize</a></p>
901
+
902
+ <h4>Magick API</h4>
903
+
904
+ <p>AdaptiveResizeImage (available in ImageMagick 6.2.9)</p>
905
+ </div>
906
+
727
907
  <div class="sig">
728
908
  <h3 id="adaptive_sharpen">adaptive_sharpen</h3>
729
909
 
@@ -955,10 +1135,55 @@ img = Magick::Image.read_inline(content)
955
1135
  <p><a href="#add_noise_channel">add_noise_channel</a></p>
956
1136
  </div>
957
1137
 
1138
+ <div class="sig">
1139
+ <h3 id="add_profile">add_profile</h3>
1140
+
1141
+ <p><span class="arg">image</span>.add_profile(<span class=
1142
+ "arg">filename</span>) -&gt; <span class="arg">self</span></p>
1143
+ </div>
1144
+
1145
+ <div class="desc">
1146
+ <h4>Description</h4>
1147
+
1148
+ <p>Adds an ICC (a.k.a. ICM), IPTC, or generic profile. If the
1149
+ file contains more than one profile all the profiles are
1150
+ added.</p>
1151
+
1152
+ <h4>Arguments</h4>
1153
+
1154
+ <p>The filename of a file containing the profile.</p>
1155
+
1156
+ <h4>Returns</h4>
1157
+
1158
+ <p>self</p>
1159
+
1160
+ <h4>Example</h4>
1161
+ <pre>
1162
+ img.add_profile('my_cmyk.icm')
1163
+ </pre>
1164
+
1165
+ <h4>See also</h4>
1166
+
1167
+ <p>The <a href="imageattrs.html#iptc_profile">iptc_profile</a>
1168
+ and <a href="imageattrs.html#color_profile">color_profile</a>
1169
+ attributes provide very similar functionality, except that
1170
+ these attributes accept the profile data in the form of a
1171
+ string. The <a href="image3.html#profile_bang">profile!</a>
1172
+ method can also be used to add a profile. The type of profile
1173
+ must be specified and the profile data must be in the form of a
1174
+ string. Also see <a href="#delete_profile">delete_profile</a>
1175
+ and <a href="image1.html#each_profile">each_profile</a>.</p>
1176
+
1177
+ <h4>Magick API</h4>
1178
+
1179
+ <p>ProfileImage</p>
1180
+ </div>
1181
+
958
1182
  <div class="sig">
959
1183
  <h3 id="add_noise_channel">add_noise_channel</h3>
960
1184
 
961
- <p>image.add_noise_channel(<span class="arg">noise_type</span>
1185
+ <p><span class=
1186
+ "arg">image</span>.add_noise_channel(<span class="arg">noise_type</span>
962
1187
  [,<span class="arg">channel</span>...]) -&gt;
963
1188
  <em>anImage</em></p>
964
1189
  </div>
@@ -1193,6 +1418,125 @@ img = Magick::Image.read_inline(content)
1193
1418
  <p>BilevelImageChannel</p>
1194
1419
  </div>
1195
1420
 
1421
+ <div class="sig">
1422
+ <h3 id="black_threshold">black_threshold</h3>
1423
+
1424
+ <p><span class="arg">image</span>.black_threshold(<span class=
1425
+ "arg">red_channel</span> [, <span class=
1426
+ "arg">green_channel</span> [, <span class=
1427
+ "arg">blue_channel</span> [, <span class=
1428
+ "arg">opacity_channel</span>]]]) -&gt; <em>anImage</em></p>
1429
+ </div><!-- this example is larger than normal -->
1430
+
1431
+ <div class="desc">
1432
+ <h4>Description</h4>
1433
+
1434
+ <p class="imquote">Forces all pixels below the threshold into
1435
+ black while leaving all pixels above the threshold
1436
+ unchanged.</p>
1437
+
1438
+ <h4>Arguments</h4>
1439
+
1440
+ <p>Each channel argument is a number between 0 and MaxRGB. All
1441
+ arguments except the first may be omitted. If the <span class=
1442
+ "arg">green_channel</span> or <span class=
1443
+ "arg">blue_channel</span> argument is omitted, the default
1444
+ value is the <span class="arg">red_channel</span> value. If the
1445
+ <span class="arg">opacity_channel</span> argument is omitted,
1446
+ the default value is <a href=
1447
+ "constants.html#Opacity">OpaqueOpacity</a>.</p>
1448
+
1449
+ <h4>Returns</h4>
1450
+
1451
+ <p>A new image</p>
1452
+
1453
+ <h4>See also</h4>
1454
+
1455
+ <p><a href="image3.html#white_threshold">white_threshold</a>,
1456
+ <a href="#bilevel_channel">bilevel_channel</a></p>
1457
+
1458
+ <h4>Magick API</h4>
1459
+
1460
+ <p>BlackThresholdImage</p>
1461
+ </div>
1462
+
1463
+ <div class="sig">
1464
+ <h3 id="blend">blend</h3>
1465
+
1466
+ <p><span class="arg">image</span>.blend(<span class=
1467
+ "arg">overlay</span>, <span class="arg">src_percentage</span>,
1468
+ <span class="arg">dst_percentage</span>, <span class=
1469
+ "arg">x_offset</span>=0, <span class="arg">y_offset</span>=0)
1470
+ -&gt; <em>anImage</em><br />
1471
+ <span class="arg">image</span>.blend(<span class=
1472
+ "arg">overlay</span>, <span class="arg">src_percentage</span>,
1473
+ <span class="arg">dst_percentage</span>, <span class=
1474
+ "arg">gravity</span>, <span class="arg">x_offset</span>=0,
1475
+ <span class="arg">y_offset</span>=0) -&gt; <em>anImage</em></p>
1476
+ </div>
1477
+
1478
+ <div class="desc">
1479
+ <h4>Description</h4>
1480
+
1481
+ <p>Adds the <span class="arg">overlay</span> image to the
1482
+ target image according to <span class="arg">src_percent</span>
1483
+ and <span class="arg">dst_percent</span>.</p>
1484
+
1485
+ <p>This method corresponds to the -blend option of
1486
+ &times;Magick's <code>composite</code> command.</p>
1487
+
1488
+ <h4>Arguments</h4>
1489
+
1490
+ <dl>
1491
+ <dt>overlay</dt>
1492
+
1493
+ <dd>The source image for the composite operation. Either an
1494
+ imagelist or an image. If an imagelist, uses the current
1495
+ image.</dd>
1496
+
1497
+ <dt>src_percentage</dt>
1498
+
1499
+ <dd>Either a non-negative number a string in the form "NN%".
1500
+ If <span class="arg">src_percentage</span> is a number it is
1501
+ interpreted as a percentage. Both 0.25 and "25%" mean 25%.
1502
+ This argument is required.</dd>
1503
+
1504
+ <dt>dst_percentage</dt>
1505
+
1506
+ <dd>Either a non-negative number a string in the form "NN%".
1507
+ If <span class="arg">src_percentage</span> is a number it is
1508
+ interpreted as a percentage. Both 0.25 and "25%" mean 25%.
1509
+ This argument may omitted if no other arguments follow it. In
1510
+ this case the default is 100%-<span class=
1511
+ "arg">src_percentage</span>.</dd>
1512
+ </dl>
1513
+
1514
+ <p>The <code>blend</code> method can be called with or without
1515
+ a <span class="arg">gravity</span> argument. The <span class=
1516
+ "arg">gravity</span>, <span class="arg">x_offset</span>, and
1517
+ <span class="arg">y_offset</span> arguments are described in
1518
+ the documentation for <a href=
1519
+ "image3.html#watermark">watermark</a>.</p>
1520
+
1521
+ <h4>Example</h4>
1522
+
1523
+ <p>See <a href=
1524
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/compose/#blend">
1525
+ "Blend Two Images Together"</a> in Anthony Thyssen's
1526
+ <cite><a href=
1527
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/">Examples
1528
+ of ImageMagick Usage</a></cite>.</p>
1529
+
1530
+ <h4>Returns</h4>
1531
+
1532
+ <p>A new image</p>
1533
+
1534
+ <h4>See also</h4>
1535
+
1536
+ <p><a href="#dissolve">dissolve</a>, <a href=
1537
+ "#composite">composite</a></p>
1538
+ </div>
1539
+
1196
1540
  <div class="sig">
1197
1541
  <h3 id="blur_channel">blur_channel</h3>
1198
1542
 
@@ -1295,48 +1639,6 @@ img = Magick::Image.read_inline(content)
1295
1639
  <p>BlurImage</p>
1296
1640
  </div>
1297
1641
 
1298
- <div class="sig">
1299
- <h3 id="black_threshold">black_threshold</h3>
1300
-
1301
- <p><span class="arg">image</span>.black_threshold(<span class=
1302
- "arg">red_channel</span> [, <span class=
1303
- "arg">green_channel</span> [, <span class=
1304
- "arg">blue_channel</span> [, <span class=
1305
- "arg">opacity_channel</span>]]]) -&gt; <em>anImage</em></p>
1306
- </div><!-- this example is larger than normal -->
1307
-
1308
- <div class="desc">
1309
- <h4>Description</h4>
1310
-
1311
- <p class="imquote">Forces all pixels below the threshold into
1312
- black while leaving all pixels above the threshold
1313
- unchanged.</p>
1314
-
1315
- <h4>Arguments</h4>
1316
-
1317
- <p>Each channel argument is a number between 0 and MaxRGB. All
1318
- arguments except the first may be omitted. If the <span class=
1319
- "arg">green_channel</span> or <span class=
1320
- "arg">blue_channel</span> argument is omitted, the default
1321
- value is the <span class="arg">red_channel</span> value. If the
1322
- <span class="arg">opacity_channel</span> argument is omitted,
1323
- the default value is <a href=
1324
- "constants.html#Opacity">OpaqueOpacity</a>.</p>
1325
-
1326
- <h4>Returns</h4>
1327
-
1328
- <p>A new image</p>
1329
-
1330
- <h4>See also</h4>
1331
-
1332
- <p><a href="image3.html#white_threshold">white_threshold</a>,
1333
- <a href="#bilevel_channel">bilevel_channel</a></p>
1334
-
1335
- <h4>Magick API</h4>
1336
-
1337
- <p>BlackThresholdImage</p>
1338
- </div>
1339
-
1340
1642
  <div class="sig">
1341
1643
  <h3 id="border">border</h3>
1342
1644
 
@@ -2358,7 +2660,9 @@ f.color_reset!(red)
2358
2660
 
2359
2661
  <h4>See also</h4>
2360
2662
 
2361
- <p><a href="#composite_bang">composite!</a></p>
2663
+ <p><a href="#composite_bang">composite!</a>, <a href=
2664
+ "#dissolve">dissolve</a>, <a href=
2665
+ "image3.html#watermark">watermark</a></p>
2362
2666
 
2363
2667
  <h4>Magick API</h4>
2364
2668
 
@@ -3046,6 +3350,40 @@ cropped = img.crop(x, y, width, height, true)
3046
3350
  <p>CycleColormapImage</p>
3047
3351
  </div>
3048
3352
 
3353
+ <div class="sig">
3354
+ <h3 id="delete_profile">delete_profile</h3>
3355
+
3356
+ <p><span class="arg">image</span>.delete_profile(<span class=
3357
+ "arg">profile_name</span>) -&gt; <span class=
3358
+ "arg">self</span></p>
3359
+ </div>
3360
+
3361
+ <div class="desc">
3362
+ <h4>Description</h4>
3363
+
3364
+ <p>Deletes the specified profile. This method is effectively
3365
+ the same as passing a <code>nil</code> 2nd argument to <a href=
3366
+ "image3.html#profile_bang">profile!</a>.</p>
3367
+
3368
+ <h4>Arguments</h4>
3369
+
3370
+ <p>The profile name, "IPTC" or "ICC" for example. Specify "*"
3371
+ to delete all the profiles in the image.</p>
3372
+
3373
+ <h4>See also</h4>
3374
+
3375
+ <p>Setting the <a href=
3376
+ "imageattrs.html#iptc_profile">iptc_profile</a> attribute or
3377
+ <a href="imageattrs.html#color_profile">color_profile</a>
3378
+ attribute to nil causes the profile to be deleted. Also see
3379
+ <a href="image3.html#strip_bang">strip!</a> and <a href=
3380
+ "imageattrs.html#add_profile">add_profile</a>.</p>
3381
+
3382
+ <h4>Magick API</h4>
3383
+
3384
+ <p>ProfileImage</p>
3385
+ </div>
3386
+
3049
3387
  <div class="sig">
3050
3388
  <h3 id="despeckle">despeckle</h3>
3051
3389
 
@@ -3207,12 +3545,84 @@ exit
3207
3545
 
3208
3546
  <h4>Magick API</h4>
3209
3547
 
3210
- <p>DispatchImage (GraphicsMagick), or ExportImagePixels (ImageMagick)</p>
3548
+ <p>DispatchImage (GraphicsMagick), or ExportImagePixels
3549
+ (ImageMagick)</p>
3211
3550
 
3212
3551
  <h4>Note</h4>
3213
3552
 
3214
- <p>This method is deprecated in ImageMagick.
3215
- Use the <code>export_pixels</code> method instead.</p>
3553
+ <p>This method is deprecated in ImageMagick. Use the
3554
+ <code>export_pixels</code> method instead.</p>
3555
+ </div>
3556
+
3557
+ <div class="sig">
3558
+ <h3 id="displace">displace</h3>
3559
+
3560
+ <p><span class="arg">image</span>.displace(<span class=
3561
+ "arg">displacement_map</span>, <span class=
3562
+ "arg">x_amplitude</span>, <span class="arg">y_amplitude</span>,
3563
+ <span class="arg">x_offset</span>=0, <span class=
3564
+ "arg">y_offset</span>=0) -&gt; <em>anImage</em><br />
3565
+ <span class="arg">image</span>.displace(<span class=
3566
+ "arg">displacement_map</span>, <span class=
3567
+ "arg">x_amplitude</span>, <span class="arg">y_amplitude</span>,
3568
+ <span class="arg">gravity</span>, <span class=
3569
+ "arg">x_offset</span>=0, <span class="arg">y_offset</span>=0)
3570
+ -&gt; <em>anImage</em></p>
3571
+ </div>
3572
+
3573
+ <div class="desc">
3574
+ <h4>Description</h4>
3575
+
3576
+ <p>Uses <span class="arg">displacement_map</span> to move color
3577
+ from <span class="arg">image</span> to the output image.</p>
3578
+
3579
+ <p>This method corresponds to the -displace option of
3580
+ &times;Magick's <code>composite</code> command.</p>
3581
+
3582
+ <h4>Arguments</h4>
3583
+
3584
+ <dl>
3585
+ <dt>displacement_map</dt>
3586
+
3587
+ <dd>The source image for the composite operation. Either an
3588
+ imagelist or an image. If an imagelist, uses the current
3589
+ image.</dd>
3590
+
3591
+ <dt>x_amplitude</dt>
3592
+
3593
+ <dd>The maximum displacement on the x-axis.</dd>
3594
+
3595
+ <dt>y_amplitude</dt>
3596
+
3597
+ <dd>The maximum displacement on the y-axis. This argument may
3598
+ omitted if no other arguments follow it. In this case the
3599
+ default is the value of <span class=
3600
+ "arg">x_amplitude</span>.</dd>
3601
+ </dl>
3602
+
3603
+ <p>The <code>displace</code> method can be called with or
3604
+ without a <span class="arg">gravity</span> argument. The
3605
+ <span class="arg">gravity</span>, <span class=
3606
+ "arg">x_offset</span>, and <span class="arg">y_offset</span>
3607
+ arguments are described in the documentation for <a href=
3608
+ "image3.html#watermark">watermark</a>.</p>
3609
+
3610
+ <h4>Example</h4>
3611
+
3612
+ <p>See <a href=
3613
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/compose/#displace">
3614
+ "Composite Displacement Maps"</a> in Anthony Thyssen's
3615
+ <cite><a href=
3616
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/">Examples
3617
+ of ImageMagick Usage</a></cite>.</p>
3618
+
3619
+ <h4>Returns</h4>
3620
+
3621
+ <p>A new image</p>
3622
+
3623
+ <h4>See also</h4>
3624
+
3625
+ <p><a href="#composite">composite</a></p>
3216
3626
  </div>
3217
3627
 
3218
3628
  <div class="sig">
@@ -3252,6 +3662,102 @@ exit
3252
3662
  <p>DisplayImages</p>
3253
3663
  </div>
3254
3664
 
3665
+ <div class="sig">
3666
+ <h3 id="dissolve">dissolve</h3>
3667
+
3668
+ <p><span class="arg">image</span>.dissolve(<span class=
3669
+ "arg">overlay</span>, <span class="arg">src_percentage</span>,
3670
+ <span class="arg">dst_percentage</span>, <span class=
3671
+ "arg">x_offset</span>=0, <span class="arg">y_offset</span>=0)
3672
+ -&gt; <em>anImage</em><br />
3673
+ <span class="arg">image</span>.dissolve(<span class=
3674
+ "arg">overlay</span>, <span class="arg">src_percentage</span>,
3675
+ <span class="arg">dst_percentage</span>, <span class=
3676
+ "arg">gravity</span>, <span class="arg">x_offset</span>=0,
3677
+ <span class="arg">y_offset</span>=0) -&gt; <em>anImage</em></p>
3678
+ </div>
3679
+
3680
+ <div class="desc">
3681
+ <h4>Description</h4>
3682
+
3683
+ <p>Composites the <span class="arg">overlay</span> image into
3684
+ the target image. The opacity of <span class="arg">image</span>
3685
+ is multiplied by <span class="arg">dst_percentage</span> and
3686
+ opacity of <span class="arg">overlay</span> is multiplied by
3687
+ <span class="arg">src_percentage</span>.</p>
3688
+
3689
+ <p>This method corresponds to the -dissolve option of
3690
+ &times;Magick's <code>composite</code> command.</p>
3691
+
3692
+ <h4>Arguments</h4>
3693
+
3694
+ <dl>
3695
+ <dt>overlay</dt>
3696
+
3697
+ <dd>The source image for the composite operation. Either an
3698
+ imagelist or an image. If an imagelist, uses the current
3699
+ image.</dd>
3700
+
3701
+ <dt>src_percentage</dt>
3702
+
3703
+ <dd>Either a non-negative number a string in the form "NN%".
3704
+ If <span class="arg">src_percentage</span> is a number it is
3705
+ interpreted as a percentage. Both 0.25 and "25%" mean 25%.
3706
+ This argument is required.</dd>
3707
+
3708
+ <dt>dst_percentage (with ImageMagick)</dt>
3709
+
3710
+ <dd>Either a non-negative number a string in the form "NN%".
3711
+ If <span class="arg">src_percentage</span> is a number it is
3712
+ interpreted as a percentage. Both 0.25 and "25%" mean 25%.
3713
+ This argument may omitted if no other arguments follow it. In
3714
+ this case <span class="arg">image</span>'s opacity is
3715
+ unchanged.</dd>
3716
+
3717
+ <dt>dst_percentage (with GraphicsMagick)</dt>
3718
+
3719
+ <dd>With GraphicsMagick, <code>dissolve</code> ignores the
3720
+ value and uses <code>1.0-<span class=
3721
+ "arg">src_percentage</span></code> instead.</dd>
3722
+ </dl>
3723
+
3724
+ <p>The <code>dissolve</code> method can be called with or
3725
+ without a <span class="arg">gravity</span> argument. The
3726
+ <span class="arg">gravity</span>, <span class=
3727
+ "arg">x_offset</span>, and <span class="arg">y_offset</span>
3728
+ arguments are described in the documentation for <a href=
3729
+ "image3.html#watermark">watermark</a>.</p>
3730
+
3731
+ <h4>Example</h4>
3732
+
3733
+ <p>See " <a href=
3734
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/compose/#dissolve">
3735
+ Dissolve One Image Over Another</a>" in Anthony Thyssen's
3736
+ <cite><a href=
3737
+ "http://www.cit.gu.edu.au/~anthony/graphics/imagick6/">Examples
3738
+ of ImageMagick Usage</a></cite>.</p>
3739
+
3740
+ <p><code>bgnd.dissolve(overlay, 0.50, 1.0)</code></p>
3741
+
3742
+ <p class="rollover"><a href=
3743
+ "javascript:popup('dissolve.rb.html')"><img onmouseover=
3744
+ "this.src='ex/images/Flower_Hat.jpg'" onmouseout=
3745
+ "this.src='ex/dissolve.jpg'" src="ex/dissolve.jpg" alt=
3746
+ "dissolve example" title=
3747
+ "Click to see the example script" /></a> <img src=
3748
+ "ex/images/spin.gif" alt="" class="spin" title=
3749
+ "Mouse over the example to see the original image" /></p>
3750
+
3751
+ <h4>Returns</h4>
3752
+
3753
+ <p>A new image</p>
3754
+
3755
+ <h4>See also</h4>
3756
+
3757
+ <p><a href="#blend">blend</a>, <a href=
3758
+ "#composite">composite</a></p>
3759
+ </div>
3760
+
3255
3761
  <div class="sig">
3256
3762
  <h3 id="distortion_channel">distortion_channel</h3>
3257
3763
 
@@ -3325,6 +3831,40 @@ exit
3325
3831
  <p><a href="#clone">clone</a></p>
3326
3832
  </div>
3327
3833
 
3834
+ <div class="sig">
3835
+ <h3 id="each_iptc_dataset">each_iptc_dataset</h3>
3836
+
3837
+ <p>image.each_iptc_dataset -&gt; <code>nil</code></p>
3838
+ </div>
3839
+
3840
+ <div class="desc">
3841
+ <h4>Description</h4>
3842
+
3843
+ <p>Iterates over the IPTC DataSet constants in Magick::IPTC. If
3844
+ the image's IPTC profile has the DataSet and the data field has
3845
+ non-0 length, yields to the block. The IPTC DataSet constants
3846
+ are listed <a href="image2.html#get_iptc_dataset">here</a>.</p>
3847
+
3848
+ <h4>Arguments</h4>
3849
+
3850
+ <p>The block arguments are:</p>
3851
+
3852
+ <dl>
3853
+ <dt>dataset</dt>
3854
+
3855
+ <dd>The DataSet name</dd>
3856
+
3857
+ <dt>data_field</dt>
3858
+
3859
+ <dd>The data field</dd>
3860
+ </dl>
3861
+
3862
+ <h4>See also</h4>
3863
+
3864
+ <p><a href=
3865
+ "image2.html#get_iptc_dataset">get_iptc_dataset</a></p>
3866
+ </div>
3867
+
3328
3868
  <div class="sig">
3329
3869
  <h3 id="each_profile">each_profile</h3>
3330
3870
 
@@ -3338,7 +3878,16 @@ exit
3338
3878
  for each profile in the image, passing the profile name and
3339
3879
  value as parameters.
3340
3880
 
3341
- <h4>Returns</h4>the last value returned by the block
3881
+ <h4>Returns</h4>
3882
+
3883
+ <p>the last value returned by the block</p>
3884
+
3885
+ <h4>See also</h4>
3886
+
3887
+ <p>The <a href=
3888
+ "imageattrs.html#color_profile">color_profile</a> and <a href=
3889
+ "imageattrs.html#iptc_profile">iptc_profile</a> attributes
3890
+ return the ICC and IPTC profiles, respectively.</p>
3342
3891
 
3343
3892
  <h4>Magick API</h4>
3344
3893