1 2 3 4 5<!DOCTYPE html> 6<html lang="en"> 7<head> 8 <meta charset="utf-8" /> 9 <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no" /> 10 <title>Magick Vector Graphics @ ImageMagick</title> 11 <meta name="application-name" content="ImageMagick" /> 12 <meta name="description" content="Use ImageMagick® to create, edit, compose, or convert bitmap images. You can resize your image, crop it, change its shades and colors, add captions, among other operations." /> 13 <meta name="application-url" content="https://imagemagick.org" /> 14 <meta name="generator" content="PHP" /> 15 <meta name="keywords" content="magick, vector, graphics, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert" /> 16 <meta name="rating" content="GENERAL" /> 17 <meta name="robots" content="INDEX, FOLLOW" /> 18 <meta name="generator" content="ImageMagick Studio LLC" /> 19 <meta name="author" content="ImageMagick Studio LLC" /> 20 <meta name="revisit-after" content="2 DAYS" /> 21 <meta name="resource-type" content="document" /> 22 <meta name="copyright" content="Copyright (c) 1999-2019 ImageMagick Studio LLC" /> 23 <meta name="distribution" content="Global" /> 24 <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1" /> 25 <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" /> 26 <link href="../www/magick-vector-graphics.html" rel="canonical" /> 27 <link href="../images/wand.png" rel="icon" /> 28 <link href="../images/wand.ico" rel="shortcut icon" /> 29 <link href="assets/magick.css" rel="stylesheet" /> 30</head> 31<body> 32 <header> 33 <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> 34 <a class="navbar-brand" href="../index.html"><img class="d-block" id="icon" alt="ImageMagick" width="32" height="32" src="../images/wand.ico"/></a> 35 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsMagick" aria-controls="navbarsMagick" aria-expanded="false" aria-label="Toggle navigation"> 36 <span class="navbar-toggler-icon"></span> 37 </button> 38 39 <div class="navbar-collapse collapse" id="navbarsMagick" style=""> 40 <ul class="navbar-nav mr-auto"> 41 <li class="nav-item "> 42 <a class="nav-link" href="../index.html">Home <span class="sr-only">(current)</span></a> 43 </li> 44 <li class="nav-item "> 45 <a class="nav-link" href="download.html">Download</a> 46 </li> 47 <li class="nav-item "> 48 <a class="nav-link" href="command-line-tools.html">Tools</a> 49 </li> 50 <li class="nav-item "> 51 <a class="nav-link" href="command-line-processing.html">Command-line</a> 52 </li> 53 <li class="nav-item "> 54 <a class="nav-link" href="resources.html">Resources</a> 55 </li> 56 <li class="nav-item "> 57 <a class="nav-link" href="develop.html">Develop</a> 58 </li> 59 <li class="nav-item"> 60 <a class="nav-link" target="_blank" href="https://imagemagick.org/discourse-server/">Community</a> 61 </li> 62 </ul> 63 <form class="form-inline my-2 my-lg-0" action="https://imagemagick.org/script/search.php"> 64 <input class="form-control mr-sm-2" type="text" name="q" placeholder="Search" aria-label="Search"> 65 <button class="btn btn-outline-success my-2 my-sm-0" type="submit" name="sa">Search</button> 66 </form> 67 </div> 68 </nav> 69 <div class="container"> 70 <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" 71 style="display:block" 72 data-ad-client="ca-pub-3129977114552745" 73 data-ad-slot="6345125851" 74 data-ad-format="auto"></ins> 75 <script> 76 (adsbygoogle = window.adsbygoogle || []).push({}); 77 </script> 78 79 </div> 80 </header> 81 <main class="container"> 82 <div class="magick-template"> 83<div class="magick-header"> 84<p class="text-center"><a href="../www/magick-vector-graphics.html#overview">MVG Overview</a> • <a href="../www/magick-vector-graphics.html#primitives">Drawing Primitives</a></p> 85 86<p class="lead magick-description">This specification defines the features and syntax for Magick Vector Graphics (MVG), a modularized language for describing two-dimensional vector and mixed vector/raster graphics in ImageMagick. You can use the language to draw from the 87command line, from an MVG file, from an <a href="http://www.w3.org/TR/SVG/">SVG -- Scalable Vector Graphics</a> file or from one of the ImageMagick <a href="../www/api.html">program interfaces</a>. Use this command, for example, to render an arc:</p> 88 89<pre class="highlight"><code>convert -size 100x60 canvas:skyblue -fill white -stroke black \ 90 -draw "path 'M 30,40 A 30,20 20 0,0 70,20 A 30,20 20 1,0 30,40 Z '" \ 91 arc.png 92</code></pre> 93 94<p>and here is the result:</p> 95 96<ul> 97 <a href="../images/arc.png"><img src="../images/arc.png" width="100" height="60" alt="arc" /></a> 98</ul> 99 100<p>When the drawing gets sufficiently complex, we recommend you assemble the graphic primitives into a MVG file. For our example, we use <a href="https://imagemagick.org/source/piechart.mvg">piechart.mvg</a>:</p> 101 102<pre class="pre-scrollable"><code>push graphic-context 103 viewbox 0 0 624 369 104 affine 0.283636 0 0 0.283846 -0 -0 105 push graphic-context 106 push graphic-context 107 fill 'darkslateblue' 108 stroke 'blue' 109 stroke-width 1 110 rectangle 1,1 2199,1299 111 pop graphic-context 112 push graphic-context 113 font-size 40 114 fill 'white' 115 stroke-width 1 116 text 600,1100 'Average: 20.0' 117 pop graphic-context 118 push graphic-context 119 fill 'red' 120 stroke 'black' 121 stroke-width 5 122 path 'M700.0,600.0 L340.0,600.0 A360.0,360.0 0 0,1 408.1452123287954,389.2376150414973 z' 123 pop graphic-context 124 push graphic-context 125 font-size 40 126 fill 'white' 127 stroke-width 1 128 text 1400,140 'MagickWand for PHP' 129 pop graphic-context 130 push graphic-context 131 font-size 30 132 fill 'white' 133 stroke-width 1 134 text 1800,140 '(10.0%)' 135 pop graphic-context 136 push graphic-context 137 fill 'red' 138 stroke 'black' 139 stroke-width 4 140 rectangle 1330,100 1370,140 141 pop graphic-context 142 push graphic-context 143 fill 'yellow' 144 stroke 'black' 145 stroke-width 5 146 path 'M700.0,600.0 L408.1452123287954,389.2376150414973 A360.0,360.0 0 0,1 976.5894480359858,369.56936567559273 z' 147 pop graphic-context 148 push graphic-context 149 font-size 40 150 fill 'white' 151 stroke-width 1 152 text 1400,220 'MagickCore' 153 pop graphic-context 154 push graphic-context 155 font-size 30 156 fill 'white' 157 stroke-width 1 158 text 1800,220 '(29.0%)' 159 pop graphic-context 160 push graphic-context 161 fill 'yellow' 162 stroke 'black' 163 stroke-width 4 164 rectangle 1330,180 1370,220 165 pop graphic-context 166 push graphic-context 167 fill 'fuchsia' 168 stroke 'black' 169 stroke-width 5 170 path 'M700.0,600.0 L976.5894480359858,369.56936567559273 A360.0,360.0 0 0,1 964.2680466142854,844.4634932636567 z' 171 pop graphic-context 172 push graphic-context 173 font-size 40 174 fill 'white' 175 stroke-width 1 176 text 1400,300 'MagickWand' 177 pop graphic-context 178 push graphic-context 179 font-size 30 180 fill 'white' 181 stroke-width 1 182 text 1800,300 '(22.9%)' 183 pop graphic-context 184 push graphic-context 185 fill 'fuchsia' 186 stroke 'black' 187 stroke-width 4 188 rectangle 1330,260 1370,300 189 pop graphic-context 190 push graphic-context 191 fill 'blue' 192 stroke 'black' 193 stroke-width 5 194 path 'M700.0,600.0 L964.2680466142854,844.4634932636567 A360.0,360.0 0 0,1 757.853099990584,955.3210081341651 z' 195 pop graphic-context 196 push graphic-context 197 font-size 40 198 fill 'white' 199 stroke-width 1 200 text 1400,380 'JMagick' 201 pop graphic-context 202 push graphic-context 203 font-size 30 204 fill 'white' 205 stroke-width 1 206 text 1800,380 '(10.6%)' 207 pop graphic-context 208 push graphic-context 209 fill 'blue' 210 stroke 'black' 211 stroke-width 4 212 rectangle 1330,340 1370,380 213 pop graphic-context 214 push graphic-context 215 fill 'lime' 216 stroke 'black' 217 stroke-width 5 218 path 'M700.0,600.0 L757.853099990584,955.3210081341651 A360.0,360.0 0 0,1 340.0,600.0 z' 219 pop graphic-context 220 push graphic-context 221 font-size 40 222 fill 'white' 223 stroke-width 1 224 text 1400,460 'Magick++' 225 pop graphic-context 226 push graphic-context 227 font-size 30 228 fill 'white' 229 stroke-width 1 230 text 1800,460 '(27.5%)' 231 pop graphic-context 232 push graphic-context 233 fill 'lime' 234 stroke 'black' 235 stroke-width 4 236 rectangle 1330,420 1370,460 237 pop graphic-context 238 push graphic-context 239 font-size 100 240 fill 'white' 241 stroke-width 1 242 text 100,150 'ImageMagick' 243 pop graphic-context 244 push graphic-context 245 fill 'none' 246 stroke 'black' 247 stroke-width 5 248 circle 700,600 700,960 249 pop graphic-context 250 pop graphic-context 251pop graphic-context 252</code></pre> 253 254<p>to render a pie chart with this command:</p> 255 256<pre class="highlight"><code>convert mvg:piechart.mvg piechart.png 257</code></pre> 258 259<p>which produces this rendering:</p> 260 261<ul> 262 <a href="../images/piechart.png"><img src="../images/piechart.png" width="624" height="369" alt="piechart" /></a> 263</ul> 264 265<p>However, in general, MVG is sufficiently difficult to work with that you probably want to use a program to generate your graphics in the SVG format. ImageMagick automagically converts SVG to MVG and renders your image, for example, we render <a href="https://imagemagick.org/source/piechart.svg">piechart.svg</a> with this command:</p> 266 267<pre class="highlight"><code>convert mvg:piechart.svg piechart.jpg 268</code></pre> 269 270 271<p>to produce the same pie chart we created with the MVG language.</p> 272 273<p>Drawing is available from many of the ImageMagick <a href="../www/api.html">program interfaces</a> as well. ImageMagick converts the drawing API calls to MVG and renders it. Here is example code written in the <a href="../www/magick-wand.html">MagickWand</a> language: </p> 274 275<pre class="pre-scrollable"><code>(void) PushDrawingWand(draw_wand); 276{ 277 const PointInfo points[6] = 278 { 279 { 180,504 }, 280 { 282.7,578.6 }, 281 { 243.5,699.4 }, 282 { 116.5,699.4 }, 283 { 77.26,578.6 }, 284 { 180,504 } 285 }; 286 287 DrawSetStrokeAntialias(draw_wand,True); 288 DrawSetStrokeWidth(draw_wand,9); 289 DrawSetStrokeLineCap(draw_wand,RoundCap); 290 DrawSetStrokeLineJoin(draw_wand,RoundJoin); 291 (void) DrawSetStrokeDashArray(draw_wand,0,(const double *)NULL); 292 (void) PixelSetColor(color,"#4000c2"); 293 DrawSetStrokeColor(draw_wand,color); 294 DrawSetFillRule(draw_wand,EvenOddRule); 295 (void) PixelSetColor(color,"#800000"); 296 DrawSetFillColor(draw_wand,color); 297 DrawPolygon(draw_wand,6,points); 298} 299(void) PopDrawingWand(draw_wand); 300</code></pre> 301 302<h2><a class="anchor" id="overview"></a>MVG Overview</h2> 303 304<p>MVG ignores all white-space between commands. This allows multiple MVG commands per line. It is common convention to terminate each MVG command with a newline to make MVG easier to edit and read. This syntax description uses indentation in MVG sequences to aid with understanding. Indentation is supported but is not required.</p> 305 306<p>Metafile wrapper syntax (to support stand-alone MVG files):</p> 307 308<pre class="highlight"><code>push graphic-context 309 viewbox 0 0 width height 310 [ any other MVG commands ] 311pop graphic-context 312</code></pre> 313 314<p>Pattern syntax (saving and restoring context):</p> 315 316<pre class="highlight"><code>push pattern id x,y width,height 317 push graphic-context 318 [ drawing commands ] 319 pop graphic-context 320pop pattern 321</code></pre> 322 323<p>an example is (%s is a identifier string):</p> 324 325<pre class="highlight"><code>push defs 326 push pattern %s 10,10 20,20 327 push graphic-context 328 fill red 329 rectangle 5,5 15,15 330 pop graphic-context 331 push graphic-context 332 fill green 333 rectangle 10,10 20,20 334 pop graphic-context 335 pop pattern 336pop defs 337</code></pre> 338 339<p>For image tiling use:</p> 340 341<pre class="highlight"><code>push pattern id x,y width,height 342 image Copy ... 343pop pattern 344</code></pre> 345 346<p>Note you can use the pattern for either the fill or stroke like:</p> 347 348<pre class="highlight"><code>stroke url(#%s) 349</code></pre> 350 351<p>or</p> 352 353<pre class="highlight"><code>fill url(#%s) 354</code></pre> 355 356<p>The clip path defines a clipping area, where only the contained area to be drawn upon. Areas outside of the clipping areare masked.</p> 357 358<pre class="highlight"><code>push defs 359 push clip-path "myClipPath" 360 push graphic-context 361 rectangle 10,10 20,20 362 pop graphic-context 363 pop clip-path 364pop defs 365clip-path url(#myClipPath) 366</code></pre> 367 368<h2><a class="anchor" id="primitives"></a>Drawing Primitives</h2> 369 370<p>Here is a complete description of the MVG drawing primitives:</p> 371 372<div class="table-responsive"> 373<table class="table table-sm table-striped"> 374 <tr> 375 <th>Primitive</th> 376 <th>Description</th> 377 </tr> 378 <tr> 379 <td><a class="anchor" id="affine"></a>affine <var>s<sub>x</sub></var>,<var>r<sub>x</sub></var>,<var>r<sub>y</sub></var>,<var>s<sub>y</sub></var>,<var>t<sub>x</sub></var>,<var>t<sub>y</sub></var></td> 380 <td></td> 381 </tr> 382 <tr> 383 <td><a class="anchor" id="arc"></a>arc <var>x<sub>0</sub></var>,<var>y<sub>0</sub></var> <var>x<sub>1</sub></var>,<var>y<sub>1</sub></var> <var>a<sub>0</sub></var>,<var>a<sub>1</sub></var></td> 384 <td></td> 385 </tr> 386 <tr> 387 <td><a class="anchor" id="bezier"></a>bezier <var>x<sub>0</sub></var>,<var>y<sub>0</sub></var> ... <var>x<sub>n</sub></var>,<var>y<sub>n</sub></var></td> 388 <td><code>Bezier</code> (spline) requires three or more x,y coordinates to define its shape. The first and last points are the knots (preserved coordinates) and any intermediate coordinates are the control points. If two control points are specified, the line between each end knot and its sequentially respective control point determines the tangent direction of the curve at that end. If one control point is specified, the lines from the end knots to the one control point determines the tangent directions of the curve at each end. If more than two control points are specified, then the additional control points act in combination to determine the intermediate shape of the curve. In order to draw complex curves, it is highly recommended either to use the <code>Path</code> primitive or to draw multiple four-point bezier segments with the start and end knots of each successive segment repeated. </td> 389 </tr> 390 <tr> 391 <td><a class="anchor" id="border-color"></a>border-color <var>color</var></td> 392 <td></td> 393 </tr> 394 <tr> 395 <td><a class="anchor" id="circle"></a>circle <var>origin<sub>x</sub></var>,<var>origin<sub>y</sub></var> <var>perimeter<sub>x</sub></var>,<var>perimeter<sub>y</sub></var></td> 396 <td></td> 397 </tr> 398 <tr> 399 <td><a class="anchor" id="clip-path"></a>clip-path url(<var>name</var>)</td> 400 <td></td> 401 </tr> 402 <tr> 403 <td><a class="anchor" id="clip-rule"></a>clip-rule <var>rule</var></td> 404 <td>Choose from these rule types: 405<pre class="highlight"><code>evenodd 406nonzero</code></pre></td> 407 </tr> 408 <tr> 409 <td><a class="anchor" id="clip-units"></a>clip-units <var>units</var></td> 410 <td>Choose from these unit types: 411<pre class="highlight"><code>userSpace 412userSpaceOnUse 413objectBoundingBox</code></pre></td> 414 </tr> 415 <tr> 416 <td><a class="anchor" id="color"></a>color <var>x</var>,<var>y</var> <var>method</var></td> 417 <td>Choose from these method types: 418<pre class="highlight"><code>point 419replace 420floodfill 421filltoborder 422reset</code></pre></td> 423 </tr> 424 <tr> 425 <td><a class="anchor" id="compliance"></a>compliance <var>type</var></td> 426 <td>Choose from these compliance types: MVG or SVG</td> 427 </tr> 428 <tr> 429 <td><a class="anchor" id="decorate"></a>decorate <var>type</var></td> 430 <td>Choose from these types of decorations: 431<pre class="highlight"><code>none 432line-through 433overline 434underline</code></pre></td> 435 </tr> 436 <tr> 437 <td><a class="anchor" id="ellipse"></a>ellipse <var>center<sub>x</sub></var>,<var>center<sub>y</sub></var> <var>radius<sub>x</sub></var>,<var>radius<sub>y</sub></var> <var>arc<sub>start</sub></var>,<var>arc<sub>stop</sub></var></td> 438 <td></td> 439 </tr> 440 <tr> 441 <td><a class="anchor" id="fill"></a>fill <var>color</var></td> 442 <td>Choose from any of these <a href="../www/color.html">colors</a>.</td> 443 </tr> 444 <tr> 445 <td><a class="anchor" id="fill-opacity"></a>fill-opacity <var>opacity</var></td> 446 <td>The opacity ranges from 0.0 (fully transparent) to 1.0 (fully opaque) or as a percentage (e.g. 50%).</td> 447 </tr> 448 <tr> 449 <td><a class="anchor" id="fill-rule"></a>fill-rule <var>rule</var></td> 450 <td>Choose from these rule types: 451<pre class="highlight"><code>evenodd 452nonzero</code></pre></td> 453 </tr> 454 <tr> 455 <td><a class="anchor" id="font"></a>font <var>name</var></td> 456 <td></td> 457 </tr> 458 <tr> 459 <td><a class="anchor" id="font-family"></a>font-family <var>family</var></td> 460 <td></td> 461 </tr> 462 <tr> 463 <td><a class="anchor" id="font-size"></a>font-size <var>point-size</var></td> 464 <td></td> 465 </tr> 466 <tr> 467 <td><a class="anchor" id="font-stretch"></a>font-stretch <var>type</var></td> 468 <td>Choose from these stretch types: 469<pre class="highlight"><code>all 470normal 471ultra-condensed 472extra-condensed 473condensed 474semi-condensed 475semi-expanded 476expanded 477extra-expanded 478ultra-expanded</code></pre></td> 479 </tr> 480 <tr> 481 <td><a class="anchor" id="font-style"></a>font-style <var>style</var></td> 482 <td>Choose from these styles: 483<pre class="highlight"><code>all 484normal 485italic 486oblique</code></pre></td> 487 </tr> 488 <tr> 489 <td><a class="anchor" id="font-weight"></a>font-weight <var>weight</var></td> 490 <td>Choose from these weights: 491<pre class="highlight"><code>all 492normal 493bold 494100 495200 496300 497400 498500 499600 500700 501800 502900</code></pre></td> 503 </tr> 504 <tr> 505 <td><a class="anchor" id="gradient-units"></a>gradient-units <var>units</var></td> 506 <td>Choose from these units: 507<pre class="highlight"><code>userSpace 508userSpaceOnUse 509objectBoundingBox</code></pre></td> 510 </tr> 511 <tr> 512 <td><a class="anchor" id="gravity"></a>gravity <var>type</var></td> 513 <td>Choose from these gravity types: 514<pre class="highlight"><code>NorthWest 515North 516NorthEast 517West 518Center 519East 520SouthWest 521South 522SouthEast</code></pre></td> 523 </tr> 524 <tr> 525 <td><a class="anchor" id="compose"></a>image <var>compose x,y width,height 'filename'</var></td> 526 <td>Choose from these compose operations: 527 <table id="table" cellpadding="2" cellspacing="0" style="width: 93%"> 528 <tbody> 529 <tr> 530 <th align="left" style="width: 8%">Method</th> 531 <th align="left">Description</th> 532 </tr> 533 534 <tr> 535 <td>clear</td> 536 <td>Both the color and the alpha of the destination are cleared. Neither the source nor the destination are used as input.</td> 537 </tr> 538 539 <tr> 540 <td>src</td> 541 <td>The source is copied to the destination. The destination is not used as input.</td> 542 </tr> 543 544 <tr> 545 <td>dst</td> 546 <td>The destination is left untouched.</td> 547 </tr> 548 549 <tr> 550 <td><b>src-over</b></td> 551 <td>The source is composited over the destination.</td> 552 </tr> 553 554 <tr> 555 <td>dst-over</td> 556 <td>The destination is composited over the source and the result replaces the destination.</td> 557 </tr> 558 559 <tr> 560 <td>src-in</td> 561 <td>The part of the source lying inside of the destination replaces the destination.</td> 562 </tr> 563 564 <tr> 565 <td>dst-in</td> 566 <td>The part of the destination lying inside of the source replaces the destination.</td> 567 </tr> 568 569 <tr> 570 <td>src-out</td> 571 <td>The part of the source lying outside of the destination replaces the destination.</td> 572 </tr> 573 574 <tr> 575 <td>dst-out</td> 576 <td>The part of the destination lying outside of the source replaces the destination.</td> 577 </tr> 578 579 <tr> 580 <td>src-atop</td> 581 <td>The part of the source lying inside of the destination is composited onto the destination.</td> 582 </tr> 583 584 <tr> 585 <td>dst-atop</td> 586 <td>The part of the destination lying inside of the source is composited over the source and replaces the destination.</td> 587 </tr> 588 589 <tr> 590 <td>multiply</td> 591 <td>The source is multiplied by the destination and replaces the destination. The resultant color is always at least as dark as either of the two constituent colors. Multiplying any color with black produces black. Multiplying any color with white leaves the original color unchanged.</td> 592 </tr> 593 594 <tr> 595 <td>screen</td> 596 <td>The source and destination are complemented and then multiplied and then replace the destination. The resultant color is always at least as light as either of the two constituent colors. Screening any color with white produces white. Screening any color with black leaves the original color unchanged.</td> 597 </tr> 598 599 <tr> 600 <td>overlay</td> 601 <td>Multiplies or screens the colors, dependent on the destination color. Source colors overlay the destination whilst preserving its highlights and shadows. The destination color is not replaced, but is mixed with the source color to reflect the lightness or darkness of the destination.</td> 602 </tr> 603 604 <tr> 605 <td>darken</td> 606 <td>Selects the darker of the destination and source colors. The destination is replaced with the source when the source is darker, otherwise it is left unchanged.</td> 607 </tr> 608 609 <tr> 610 <td>lighten</td> 611 <td>Selects the lighter of the destination and source colors. The destination is replaced with the source when the source is lighter, otherwise it is left unchanged.</td> 612 </tr> 613 614 <tr> 615 <td>linear-light</td> 616 <td>Increase contrast slightly with an impact on the foreground's tonal values.</td> 617 </tr> 618 619 <tr> 620 <td>color-dodge</td> 621 <td>Brightens the destination color to reflect the source color. Painting with black produces no change.</td> 622 </tr> 623 624 <tr> 625 <td>color-burn</td> 626 <td>Darkens the destination color to reflect the source color. Painting with white produces no change.</td> 627 </tr> 628 629 <tr> 630 <td>hard-light</td> 631 <td>Multiplies or screens the colors, dependent on the source color value. If the source color is lighter than 0.5, the destination is lightened as if it were screened. If the source color is darker than 0.5, the destination is darkened, as if it were multiplied. The degree of lightening or darkening is proportional to the difference between the source color and 0.5. If it is equal to 0.5 the destination is unchanged. Painting with pure black or white produces black or white.</td> 632 </tr> 633 634 <tr> 635 <td>soft-light</td> 636 <td>Darkens or lightens the colors, dependent on the source color value. If the source color is lighter than 0.5, the destination is lightened. If the source color is darker than 0.5, the destination is darkened, as if it were burned in. The degree of darkening or lightening is proportional to the difference between the source color and 0.5. If it is equal to 0.5, the destination is unchanged. Painting with pure black or white produces a distinctly darker or lighter area, but does not result in pure black or white.</td> 637 </tr> 638 639 <tr> 640 <td>plus</td> 641 <td>The source is added to the destination and replaces the destination. This operator is useful for animating a dissolve between two images.</td> 642 </tr> 643 644 <tr> 645 <td>add</td> 646 <td>As per 'plus' but transparency data is treated as matte 647 values. As such any transparent areas in either image remain 648 transparent. </td> 649 </tr> 650 651 <tr> 652 <td>minus</td> 653 <td>Subtract the colors in the source image from the 654 destination image. When transparency is involved, Opaque areas will be 655 subtracted from any destination opaque areas. </td> 656 </tr> 657 658 <tr> 659 <td>subtract</td> 660 <td>Subtract the colors in the source image from the 661 destination image. When transparency is involved transparent areas are 662 subtracted, so only the opaque areas in the source remain opaque in 663 the destination image. </td> 664 </tr> 665 666 <tr> 667 <td>difference</td> 668 <td>Subtracts the darker of the two constituent colors from the lighter. Painting with white inverts the destination color. Painting with black produces no change.</td> 669 </tr> 670 671 <tr> 672 <td>exclusion</td> 673 <td>Produces an effect similar to that of 'difference', but appears as lower contrast. Painting with white inverts the destination color. Painting with black produces no change.</td> 674 </tr> 675 676 <tr> 677 <td>xor</td> 678 <td>The part of the source that lies outside of the destination is combined with the part of the destination that lies outside of the source.</td> 679 </tr> 680 681 <tr> 682 <td>copy-*</td> 683 <td>Copy the specified channel in the source image to the 684 same channel in the destination image. If the channel specified in 685 the source image does not exist, (which can only happen for methods, 686 '<code>copy-opacity</code>' or '<code>copy-black</code>') then it is 687 assumed that the source image is a special grayscale channel image 688 of the values to be copied. </td> 689 </tr> 690 691 <tr> 692 <td>change-mask</td> 693 <td>Replace any destination pixel that is the similar to the source images pixel (as defined by the current <a href="../www/magick-vector-graphics.html#fuzz">-fuzz</a> factor), with transparency. </td> 694 </tr> 695 </tbody> 696</table></td> 697 </tr> 698 <tr> 699 <td><a class="anchor" id="interline-spacing"></a>interline-spacing <var>pixels</var></td> 700 <td></td> 701 </tr> 702 <tr> 703 <td><a class="anchor" id="interword-spacing"></a>interword-spacing <var>pixels</var></td> 704 <td></td> 705 </tr> 706 <tr> 707 <td><a class="anchor" id="kerning"></a>kerning <var>pixels</var></td> 708 <td></td> 709 </tr> 710 <tr> 711 <td><a class="anchor" id="line"></a>line <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td> 712 <td></td> 713 </tr> 714 <tr> 715 <td><a class="anchor" id="matte"></a>matte <var>x,y method</var></td> 716 <td>Choose from these methods: 717<pre class="highlight"><code>point 718replace 719floodfill 720filltoborder 721reset</code></pre></td> 722 </tr> 723 <tr> 724 <td><a class="anchor" id="offset"></a>offset <var>offset</var></td> 725 <td></td> 726 </tr> 727 <tr> 728 <td><a class="anchor" id="opacity"></a>opacity <var>opacity</var></td> 729 <td>Use percent (e.g. 50%).</td> 730 </tr> 731 <tr> 732 <td><a class="anchor" id="path"></a>path <var>path</var></td> 733 <td></td> 734 </tr> 735 <tr> 736 <td><a class="anchor" id="point"></a>point <var>x,y</var></td> 737 <td></td> 738 </tr> 739 <tr> 740 <td><a class="anchor" id="polygon"></a>polygon <var>x,y x<sub>1</sub>,y<sub>1</sub>, ..., x<sub>n</sub>,y<sub>n</sub></var></td> 741 <td></td> 742 </tr> 743 <tr> 744 <td><a class="anchor" id="polyline"></a>polyline <var>x,y x<sub>1</sub>,y<sub>1</sub>, ..., x<sub>n</sub>,y<sub>n</sub></var></td> 745 <td></td> 746 </tr> 747 <tr> 748 <td><a class="anchor" id="pop-clip-path"></a>pop clip-path</td> 749 <td></td> 750 </tr> 751 <tr> 752 <td><a class="anchor" id="pop-defs"></a>pop defs</td> 753 <td></td> 754 </tr> 755 <tr> 756 <td><a class="anchor" id="pop-gradient"></a>pop gradient</td> 757 <td></td> 758 </tr> 759 <tr> 760 <td><a class="anchor" id="pop-graphic-context"></a>pop graphic-context</td> 761 <td></td> 762 </tr> 763 <tr> 764 <td><a class="anchor" id="pop-pattern"></a>pop pattern</td> 765 <td></td> 766 </tr> 767 <tr> 768 <td><a class="anchor" id="push"></a>push clip-path "<var>name</var>"</td> 769 <td></td> 770 </tr> 771 <tr> 772 <td><a class="anchor" id="push-defs"></a>push defs</td> 773 <td></td> 774 </tr> 775 <tr> 776 <td><a class="anchor" id="push-gradient-linear"></a>push gradient <var>id linear x,y x<sub>1</sub>,y<sub>1</sub></var></td> 777 <td></td> 778 </tr> 779 <tr> 780 <td><a class="anchor" id="push-gradient-radial"></a>push gradient <var>id radial x<sub>c</sub>,c<sub>y</sub> x<sub>f</sub>,y<sub>f</sub> radius</var></td> 781 <td></td> 782 </tr> 783 <tr> 784 <td><a class="anchor" id="push-graphic-context"></a>push graphic-context { "<var>id</var>" }</td> 785 <td>the <em>id</em> is optional</td> 786 </tr> 787 <tr> 788 <td><a class="anchor" id="push-pattern"></a>push pattern <var>id radial x,y width,height</var></td> 789 <td></td> 790 </tr> 791 <tr> 792 <td><a class="anchor" id="rectangle"></a>rectangle <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td> 793 <td></td> 794 </tr> 795 <tr> 796 <td><a class="anchor" id="rotate"></a>rotate <var>angle</var></td> 797 <td></td> 798 </tr> 799 <tr> 800 <td><a class="anchor" id="roundrectangle"></a>roundrectangle <var>x,y x<sub>1</sub>,y<sub>1</sub> width,height</var></td> 801 <td></td> 802 </tr> 803 <tr> 804 <td><a class="anchor" id="scale"></a>scale <var>x,y</var></td> 805 <td></td> 806 </tr> 807 <tr> 808 <td><a class="anchor" id="skewX"></a>skewX <var>angle</var></td> 809 <td></td> 810 </tr> 811 <tr> 812 <td><a class="anchor" id="skewY"></a>skewX <var>angle</var></td> 813 <td></td> 814 </tr> 815 <tr> 816 <td><a class="anchor" id="stop-color"></a>stop-color <var>color offset</var></td> 817 <td></td> 818 </tr> 819 <tr> 820 <td><a class="anchor" id="stroke"></a>stroke <var>color</var></td> 821 <td></td> 822 </tr> 823 <tr> 824 <td><a class="anchor" id="stroke-antialias"></a>stroke-antialias <var>0 • 1</var></td> 825 <td></td> 826 </tr> 827 <tr> 828 <td><a class="anchor" id="stroke-dasharray"></a>stroke-dasharray <var>none • numeric-list</var></td> 829 <td></td> 830 </tr> 831 <tr> 832 <td><a class="anchor" id="stroke-dashoffset"></a>stroke-dashoffset <var>offset</var></td> 833 <td></td> 834 </tr> 835 <tr> 836 <td><a class="anchor" id="stroke-linecap"></a>stroke-linecap <var>type</var></td> 837 <td>Choose from these cap types: 838<pre class="highlight"><code>butt 839round 840square</code></pre></td> 841 </tr> 842 <tr> 843 <td><a class="anchor" id="stroke-linejoin"></a>stroke-linejoin <var>type</var></td> 844 <td>Choose from these join types: 845<pre class="highlight"><code>bevel 846miter 847round</code></pre></td> 848 </tr> 849 <tr> 850 <td><a class="anchor" id="stroke-miterlimit"></a>stroke-miterlimit <var>limit</var></td> 851 <td></td> 852 </tr> 853 <tr> 854 <td><a class="anchor" id="stroke-opacity"></a>stroke-opacity <var>opacity</var></td> 855 <td>The opacity ranges from 0.0 (fully transparent) to 1.0 (fully opaque) or as a percentage (e.g. 50%).</td> 856 </tr> 857 <tr> 858 <td><a class="anchor" id="stroke-width"></a>stroke-width <var>width</var></td> 859 <td></td> 860 </tr> 861 <tr> 862 <td><a class="anchor" id="text"></a>text <var>"text"</var></td> 863 <td></td> 864 </tr> 865 <tr> 866 <td><a class="anchor" id="text-antialias"></a>text-antialias <var>0 • 1</var></td> 867 <td></td> 868 </tr> 869 <tr> 870 <td><a class="anchor" id="text-undercolor"></a>text-undercolor <var>color</var></td> 871 <td></td> 872 </tr> 873 <tr> 874 <td><a class="anchor" id="translate"></a>translate <var>x,y</var></td> 875 <td></td> 876 </tr> 877 <tr> 878 <td><a class="anchor" id="use"></a>use "<var>url(#id)</var>"</td> 879 <td></td> 880 </tr> 881 <tr> 882 <td><a class="anchor" id="viewbox"></a>viewbox <var>x,y x<sub>1</sub>,y<sub>1</sub></var></td> 883 <td></td> 884 </tr> 885</table></div> 886</div> 887 </div> 888 </main><!-- /.container --> 889 <footer class="magick-footer"> 890 <p><a href="security-policy.html">Security</a> • 891 <a href="architecture.html">Architecture</a> • 892 <a href="links.html">Related</a> • 893 <a href="sitemap.html">Sitemap</a> 894 895 <a href="magick-vector-graphics.html#"><img class="d-inline" id="wand" alt="And Now a Touch of Magick" width="16" height="16" src="../images/wand.ico"/></a> 896 897 <a href="http://pgp.mit.edu/pks/lookup?op=get&search=0x89AB63D48277377A">Public Key</a> • 898 <a href="support.html">Donate</a> • 899 <a href="https://imagemagick.org/script/contact.php">Contact Us</a> 900 <br/> 901 <small>© 1999-2019 ImageMagick Studio LLC</small></p> 902 </footer> 903 904 <!-- Javascript assets --> 905 <script src="assets/magick.js" crossorigin="anonymous"></script> 906 <script>window.jQuery || document.write('<script src="https://localhost/ajax/libs/jquery/3.3.1/jquery.min.js"><\/script>')</script> 907</body> 908</html> 909<!-- Magick Cache 5th January 2019 11:43 -->