| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 
 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <style type="text/css"><!--
    @import url("../../www/magick.css");
  //--></style>
  <title>ImageMagick: MagickCore, C API for ImageMagick: Add a Special Effect</title>
  <meta http-equiv="Content-Language" content="en-US" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Reply-to" content="magick-users@imagemagick.org" />
  <meta name="Generator" content="PHP" />
  <meta name="Keywords" content="magickcore, c, api, for, imagemagick:, add, a, special, effect, ImageMagick, PerlMagick, Magick++, Image, Magick" />
  <meta name="Description" content="ImageMagick (TM) is a free software suite to create, edit and compose bitmap images. It can read, convert and write images in a large variety of formats. Images can be cropped, colors can be changed, various effects can be applied, images can be rotated and combined, and text, lines, polygons, ellipses and Bézier curves can be added to images and stretched and rotated.  ImageMagick is free software: it is delivered with full source code and can be freely used, copied, modified and distributed. Its license is compatible with the GPL. It runs on all major operating systems.  Most of the functionality of ImageMagick can be used interactively from the command line; more often, however, the features are used from programs written in the programming languages Perl, C, C++, Python, PHP, Ruby or Java, for which ready-made ImageMagick interfaces (PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick) are available. This makes it possible to modify or create images automatically and dynamically.  ImageMagick supports many image formats (over 90 major formats) including popular formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF." />
  <meta name="Rating" content="GENERAL" />
  <meta name="Robots" content="ALL" />
  <meta name="Generator" content="ImageMagick Studio LLC" />
  <meta name="Author" content="ImageMagick Studio LLC" />
  <meta name="Revisit-after" content="2 DAYS" />
  <meta name="Resource-type" content="document" />
  <meta name="Copyright" content="Copyright (c) 1999-2005 ImageMagick Studio LLC" />
  <meta name="Distribution" content="Global" />
  <link rel="shortcut icon" href="/../images/wand.ico"  type="image/x-icon" />
</head>
<body id="www-imagemagick-org">
  <table width="100%" id="titlebar" bgcolor="#f5f5f5" cellpadding="0" cellspacing="0" border="0" summary="ImageMagick">
    <tbody>
      <tr valign="top">
        <td align="left"><a href="../../index.html"><img id="titlebar-west" src="../../images/script.png" alt="[ImageMagick]" width="202" height="118" border="0" name="titlebar-west" /></a></td>
        <td width="35%"><br /></td>
        <td align="left"><a href="http://www.imagemagick.org/" target="1593175053"><img id="titlebar-west" src="../../images/sponsor.jpg" alt="[sponsor]" border="0" vspace="28" name="titlebar-west" /></a></td>
        <td width="65%"><br /></td>
        <td bgcolor="white" align="right"><a href="../../index.html"><img src="../../images/sprite.jpg" alt="" width="114" height="118" border="0" name="titlebar-east" /></a></td>
        <td bgcolor="white" align="right"><a href="../../index.html"><img id="titlebar-east" src="../../images/logo.jpg" alt="" width="114" height="118" border="0" name="titlebar-east" /></a></td>
      </tr>
    </tbody>
  </table>
  <table width="100%" border="0" cellpadding="0" cellspacing="0" summary="">
  <tbody>
    <tr valign="top" style="height: 100%;">
      <td id="menu" width="1%" height="100%">
      <p><a href="#main">Skip to page contents</a></p>
      <span>[</span>
      <a href="../../index.html">About ImageMagick</a>
      <a href="../../www/command-line-tools.html">Command-line Tools</a>
      <a href="../../www/api.html">Program Interfaces</a>
  <span>]</span><br /><span>[</span>
      <a href="../../www/install-source.html">Install from Source</a>
      <a href="../../www/binary-releases.html">Binary Releases</a>
      <a href="../../www/resources.html">Resources</a>
  <span>]</span><br /><span>[</span>
      <a href="../../www/download.html">Download</a>
  <span>]</span><br /><span>[</span>
      <a href="../../www/links.html">Links</a>
  <span>]</span><br /><br /><span>[</span>
      <a href="../../www/sponsors.html">Sponsors</a>
  <a href="http://www.desktopexchange.com/" class="sponsor" target="sponsor">Desktop Wallpaper</a><!-- 20050810 -->
      <span>]</span>
      </td>
      <td id="main" valign="top">
<p class="navigation-index">[ <a href="#CharcoalImage">CharcoalImage</a> | <a href="#ColorizeImage">ColorizeImage</a> | <a href="#ConvolveImageChannel">ConvolveImageChannel</a> | <a href="#EvaluateImageChannel">EvaluateImageChannel</a> | <a href="#FxImageChannel">FxImageChannel</a> | <a href="#ImplodeImage">ImplodeImage</a> | <a href="#The MorphImages">The MorphImages</a> | <a href="#OilPaintImage">OilPaintImage</a> | <a href="#MagickSepiaToneImage">MagickSepiaToneImage</a> | <a href="#ShadowImage">ShadowImage</a> | <a href="#SolarizeImage">SolarizeImage</a> | <a href="#SteganoImage">SteganoImage</a> | <a href="#StereoImage">StereoImage</a> | <a href="#SwirlImage">SwirlImage</a> | <a href="#TintImage">TintImage</a> | <a href="#WaveImage">WaveImage</a> ]</p>
<div style="margin: auto;">
  <h2><a name="CharcoalImage">CharcoalImage</a></h2>
</div>
<p>CharcoalImage() creates a new image that is a copy of an existing one with the edge highlighted.  It allocates the memory necessary for the new Image structure and returns a pointer to the new image.</p>
<p>The format of the CharcoalImage method is:</p>
<pre class="code">
  Image *CharcoalImage(const Image *image,const double radius,
    const double sigma,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>radius</h4>
<p>the radius of the pixel neighborhood.</p>
<h4>sigma</h4>
<p>The standard deviation of the Gaussian, in pixels.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="ColorizeImage">ColorizeImage</a></h2>
</div>
<p>ColorizeImage() blends the fill color with each pixel in the image. A percentage blend is specified with opacity.  Control the application of different color components by specifying a different percentage for each component (e.g. 90/100/10 is 90 red, 100 green, and 10 blue).</p>
<p>The format of the ColorizeImage method is:</p>
<pre class="code">
  Image *ColorizeImage(const Image *image,const char *opacity,
    const PixelPacket colorize,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>opacity</h4>
<p>A character string indicating the level of opacity as a percentage.</p>
<h4>colorize</h4>
<p>A color value.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="ConvolveImageChannel">ConvolveImageChannel</a></h2>
</div>
<p>ConvolveImageChannel() applies a custom convolution kernel to the image.</p>
<p>The format of the ConvolveImageChannel method is:</p>
<pre class="code">
  Image *ConvolveImageChannel(const Image *image,const ChannelType channel,
    const unsigned long order,const double *kernel,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>channel</h4>
<p>The channel type.</p>
<h4>order</h4>
<p>The number of columns and rows in the filter kernel.</p>
<h4>kernel</h4>
<p>An array of double representing the convolution kernel.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="EvaluateImageChannel">EvaluateImageChannel</a></h2>
</div>
<p>EvaluateImageChannel() applies a value to the image with an arithmetic, relational, or logical operator to an image. Use these operations to lighten or darken an image, to increase or decrease contrast in an image, or to produce the "negative" of an image.</p>
<p>The format of the EvaluateImageChannel method is:</p>
<pre class="code">
  MagickBooleanType EvaluateImageChannel(Image *image,
    const ChannelType channel,const MagickEvaluateOperator op,
    const double value,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>channel</h4>
<p>The channel.</p>
<h4>op</h4>
<p>A channel op.</p>
<h4>value</h4>
<p>A value value.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="FxImageChannel">FxImageChannel</a></h2>
</div>
<p>FxImageChannel() applies a mathematical expression to the specified image channel(s).</p>
<p>The format of the FxImageChannel method is:</p>
<pre class="code">
  Image *FxImageChannel(const Image *image,const ChannelType channel,
    const char *expression,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>channel</h4>
<p>The channel.</p>
<h4>expression</h4>
<p>A mathematical expression.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="ImplodeImage">ImplodeImage</a></h2>
</div>
<p>ImplodeImage() creates a new image that is a copy of an existing one with the image pixels "implode" by the specified percentage.  It allocates the memory necessary for the new Image structure and returns a pointer to the new image.</p>
<p>The format of the ImplodeImage method is:</p>
<pre class="code">
  Image *ImplodeImage(const Image *image,const double amount,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>implode_image</h4>
<p>Method ImplodeImage returns a pointer to the image after it is implode.  A null image is returned if there is a memory shortage.</p>
<h4>image</h4>
<p>The image.</p>
<h4>amount</h4>
<p>Define the extent of the implosion.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="The MorphImages">The MorphImages</a></h2>
</div>
<p>The MorphImages() method requires a minimum of two images.  The first image is transformed into the second by a number of intervening images as specified by frames.</p>
<p>The format of the MorphImage method is:</p>
<pre class="code">
  Image *MorphImages(const Image *image,const unsigned long number_frames,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>number_frames</h4>
<p>Define the number of in-between image to generate. The more in-between frames, the smoother the morph.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="OilPaintImage">OilPaintImage</a></h2>
</div>
<p>OilPaintImage() applies a special effect filter that simulates an oil painting.  Each pixel is replaced by the most frequent color occurring in a circular region defined by radius.</p>
<p>The format of the OilPaintImage method is:</p>
<pre class="code">
  Image *OilPaintImage(const Image *image,const double radius,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>radius</h4>
<p>The radius of the circular neighborhood.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="MagickSepiaToneImage">MagickSepiaToneImage</a></h2>
</div>
<p>MagickSepiaToneImage() applies a special effect to the image, similar to the effect achieved in a photo darkroom by sepia toning.  Threshold ranges from 0 to QuantumRange and is a measure of the extent of the sepia toning.  A threshold of 80 is a good starting point for a reasonable tone.</p>
<p>The format of the SepiaToneImage method is:</p>
<pre class="code">
  Image *SepiaToneImage(const Image *image,const double threshold,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>threshold</h4>
<p>The tone threshold.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="ShadowImage">ShadowImage</a></h2>
</div>
<p>ShadowImage() simulates a shadow from the specified image and retuns it.</p>
<p>The format of the ShadowImage method is:</p>
<pre class="code">
  Image *ShadowImage(const Image *image,const double opacity,
    const double sigma,const long x_offset,const long y_offset,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>opacity</h4>
<p>percentage transparency.</p>
<h4>sigma</h4>
<p>The standard deviation of the Gaussian, in pixels.</p>
<h4>x_offset</h4>
<p>the shadow x-offset.</p>
<h4>y_offset</h4>
<p>the shadow y-offset.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="SolarizeImage">SolarizeImage</a></h2>
</div>
<p>SolarizeImage() applies a special effect to the image, similar to the effect achieved in a photo darkroom by selectively exposing areas of photo sensitive paper to light.  Threshold ranges from 0 to QuantumRange and is a measure of the extent of the solarization.</p>
<p>The format of the SolarizeImage method is:</p>
<pre class="code">
  MagickBooleanType SolarizeImage(Image *image,const double threshold)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>threshold</h4>
<p>Define the extent of the solarization.</p>
<div style="margin: auto;">
  <h2><a name="SteganoImage">SteganoImage</a></h2>
</div>
<p>SteganoImage() hides a digital watermark within the image.  Recover the hidden watermark later to prove that the authenticity of an image. Offset defines the start position within the image to hide the watermark.</p>
<p>The format of the SteganoImage method is:</p>
<pre class="code">
  Image *SteganoImage(const Image *image,Image *watermark,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>watermark</h4>
<p>The watermark image.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="StereoImage">StereoImage</a></h2>
</div>
<p>StereoImage() combines two images and produces a single image that is the composite of a left and right image of a stereo pair.  Special red-green stereo glasses are required to view this effect.</p>
<p>The format of the StereoImage method is:</p>
<pre class="code">
  Image *StereoImage(const Image *image,const Image *offset_image,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>offset_image</h4>
<p>Another image.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="SwirlImage">SwirlImage</a></h2>
</div>
<p>SwirlImage() swirls the pixels about the center of the image, where degrees indicates the sweep of the arc through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to 360.</p>
<p>The format of the SwirlImage method is:</p>
<pre class="code">
  Image *SwirlImage(const Image *image,double degrees,
    ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>degrees</h4>
<p>Define the tightness of the swirling effect.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="TintImage">TintImage</a></h2>
</div>
<p>TintImage() applies a color vector to each pixel in the image.  The length of the vector is 0 for black and white and at its maximum for the midtones. The vector weighting function is f(x)=(1-(4.0*((x-0.5)*(x-0.5))))</p>
<p>The format of the TintImage method is:</p>
<pre class="code">
  Image *TintImage(const Image *image,const char *opacity,
    const PixelPacket tint,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>opacity</h4>
<p>A color value used for tinting.</p>
<h4>tint</h4>
<p>A color value used for tinting.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
<div style="margin: auto;">
  <h2><a name="WaveImage">WaveImage</a></h2>
</div>
<p>WaveImage() creates a "ripple" effect in the image by shifting the pixels vertically along a sine wave whose amplitude and wavelength is specified by the given parameters.</p>
<p>The format of the WaveImage method is:</p>
<pre class="code">
  Image *WaveImage(const Image *image,const double amplitude,
    const double wave_length,ExceptionInfo *exception)
</pre>
<p>A description of each parameter follows:</p>
<h4>image</h4>
<p>The image.</p>
<h4>amplitude, wave_length</h4>
<p>Define the amplitude and wave length of the sine wave.</p>
<h4>exception</h4>
<p>Return any errors or warnings in this structure.</p>
      </td>
      <td id="margin" width="1%" height="100%" valign="top" align="right"> </td>
    </tr>
  </tbody>
  </table>
  <div id="linkbar">
    <a href="http://redux.imagemagick.org/discussion-server" target="1960296602">Discourse Server</a> |
    <a href="../../www/mailing-list.html">Mailing Lists</a> |
    <a href="http://redux.imagemagick.org/gallery" target="200283973">Image Gallery</a> |
    <a href="http://redux.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi" target="1671664668">ImageMagick Studio</a>
  </div>
  <div>
    <span id="footer-west">© 1999-2005 ImageMagick Studio LLC</span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
</body>
</html>
 |