



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
  <meta http-equiv="x-ua-compatible" content="ie=edge" />
  <title>Image Gradients @ ImageMagick</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  <meta name="application-name" content="ImageMagick"/>
  <meta name="description" content="ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves."/>
  <meta name="application-url" content="https://www.imagemagick.org"/>
  <meta name="generator" content="PHP"/>
  <meta name="keywords" content="image, gradients, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert"/>
  <meta name="rating" content="GENERAL"/>
  <meta name="robots" content="INDEX, FOLLOW"/>
  <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-2017 ImageMagick Studio LLC"/>
  <meta name="distribution" content="Global"/>
  <meta name="magick-serial" content="P131-S030410-R485315270133-P82224-A6668-G1245-1"/>
  <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4" />
  <link rel="canonical" href="https://www.imagemagick.org/script/gradient.html"/>
  <link rel="icon" href="../images/wand.png"/>
  <link rel="shortcut icon" href="../images/wand.ico"/>
  <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:900,400,400italic,700,700italic,300,300italic|Open+Sans:300italic,400italic,700italic,300,400,600,700" />
  <link rel="stylesheet" href="css/magick.css"/>
</head>
<body>
<div class="main">
<div class="magick-masthead">
  <div class="container">
    <script async="async" src="http://localhost/pagead/js/adsbygoogle.js"></script>    <ins class="adsbygoogle"
         style="display:block"
         data-ad-client="ca-pub-3129977114552745"
         data-ad-slot="6345125851"
         data-ad-format="auto"></ins>
    <script>
      (adsbygoogle = window.adsbygoogle || []).push({});
    </script>
    <nav class="magick-nav">
      <a class="magick-nav-item " href="../index.html">Home</a>
      <a class="magick-nav-item " href="binary-releases.html">Download</a>
      <a class="magick-nav-item " href="command-line-tools.html">Tools</a>
      <a class="magick-nav-item " href="command-line-processing.html">Command-line</a>
      <a class="magick-nav-item " href="resources.html">Resources</a>
      <a class="magick-nav-item " href="api.html">Develop</a>
      <a class="magick-nav-item " href="https://www.imagemagick.org/script/search.php">Search</a>
      <a class="magick-nav-item pull-right" href="https://www.imagemagick.org/discourse-server/">Community</a>
    </nav>
  </div>
</div>
<div class="container">
<div class="magick-header">

<p class="lead magick-description">An image gradient creates a gradual blend between two colors formed into a shape that is linear, circular, or ellipical.</p>

<p>For a linear gradient, the operator is either:</p>

<pre>
gradient:
gradient:color1-color2
</pre>

<p> The for a radial gradient, the operator is either:</p>

<pre>
radial-gradient:
radial-gradient:color1-color2
</pre>

<p> In the above, color1 is the fromColor and color2 is the toColor, as described in more detail below. The default is white for color1 and black for color2, i.e., white-black.</p> 

<p>The default for a linear gradient has color1 at the top of the image and color2 at the bottom of the image. Similarly, the default for a radial gradient has color1 at the center of the image and color2 at the boundary of the image.</p>

<p>Gradient colors may be any valid color defined per <a href="https://www.imagemagick.org/script/color.html" target="_blank">https://www.imagemagick.org/script/color.html</a>. The named colors of black/white/grayXX are non-linear gray gradients; whereas gray(XX[%]) is a linear gray gradient. For Unix systems, enclose rgb(a) and hex colors in quotes. Use double quotes, if using variables for the values.</p>

<p>Here is an example linear gradient:</p>

<pre>
convert -size 256x256 gradient: linear_gradient.png
convert -size 256x256 gradient:white-black linear_gradient.png
</pre>
<p><img src="../images/gradients/linear_gradient.png" width="256" height="256" /></p>

<p>If you want a radial gradient, try:</p>

<pre>
convert -size 256x256 radial-gradient: radial_gradient.png
convert -size 256x256 radial-gradient:white-black radial_gradient.png
</pre>
<p><img src="../images/gradients/radial_gradient.png" width="256" height="256" /></p>

<p>As of IM 6.9.2.5, gradients have been enhanced through the use of several -defines.</p>

<table class="table table-condensed table-striped">
  <tr>
    <td><code>-define gradient:vector=<var>x1</var>,<var>y1</var>, <var>x2</var>,<var>y2</var></code></td>
    <td>Specifies the direction of the linear gradient going from vector1 
    (x1,y1) to vector2 (x2,y2). Color1 (fromColor) will be located at vector 
    position x1,y1 and color2 (toColor) will be located at vector position 
    x2,y2.</td>
  </tr>

  <tr>
    <td><code>-define gradient:center=<var>x</var>,<var>y</var></code></td>
    <td>Specifies the coordinates of the center point for the radial gradient. 
    The default is the center of the image.</td>
  </tr>

  <tr>
    <td><code>-define gradient:radii=<var>x</var>,<var>y</var></code></td>
    <td>Specifies the x and y radii of the gradient. If the x radius and the y 
    radius are equal, the shape of the radial gradient will be a circle. If 
    they differ, then the shape will be an ellipse. The default values are the 
    maximum of the half width and half height of the image.</td>
  </tr>

  <tr>
    <td><code>-define gradient:angle=<var>angle in degrees</var></code></td>
    <td>For a linear gradient, this specifies the direction of the gradient 
    going from color1 to color2 in a clockwise positive manner relative to 
    north (up). For a radial gradient, this specifies the rotation of the 
    gradient in a clockwise positive manner from its normal X-Y 
    orientation.</td>
  </tr>

  <tr>
    <td><code>-define gradient:bounding-box=<var>width</var>x<var>height</var>+<var>x</var>+<var>y</var></code></td>
    <td>Limits the gradient to a larger or smaller region than the image 
    dimensions. If the region defined by the bounding box is smaller than the 
    image, then color1 will be the color of the background.</td>
  </tr>
</table>


<p>We also support two convenience defines for setting the linear gradient direction and the radial gradient shape.</p>

<table class="table table-condensed table-striped">
  <tr>
    <td><code>-define gradient:direction=<em>{NorthWest, North, Northeast, West, East, SouthWest, South, SouthEast}</em></code></td>
    <td>Specifies the direction of the linear gradient towards the 
    top/bottom/left/right or diagonal corners.</td>
  </tr>

  <tr>
    <td><code>-define gradient:extent=<em>{Circle, Diagonal, Ellipse, Maximum, Minimum}</em></code></td>
    <td>Specifies the shape of an image centered radial gradient. Circle and 
    Maximum draw a circular radial gradient even for rectangular shaped images 
    of radius equal to the larger of the half-width and half-height of the 
    image. The Circle and Maximum options are both equivalent to the default 
    radial gradient. The Minimum option draws a circular radial gradient 
    even for rectangular shaped images of radius equal to the smaller of the 
    half-width and half-height of the image. The Diagonal option draws a 
    circular radial gradient even for rectangular shaped images of radius equal 
    to the half-diagonal of the image. The Ellipse options draws an elliptical 
    radial gradient for rectangular shaped images of radii equal to half the
    width and half the height of the image.</td>
  </tr>
</table>

<p>Examples</p>

<p>The default linear gradient may also be generated in any of the following ways (or by reversing the direction and swapping color1 and color2):</p>

<pre>
convert -size 256x128 -define gradient:direction=north gradient:black-white linear_gradient_default.png
convert -size 256x128 -define gradient:angle=0 gradient:black-white linear_gradient_default.png
</pre>
<p><img src="../images/gradients/linear_gradient_default.png" width="256" height="128" /></p>

<p>The equivalent of </p>

<pre>
convert -size 128x256 gradient: -rotate 90 linear_gradient_east.png
</pre>

<p>can be generate by either of the following (or by reversing the direction and swapping color1 and color2):</p>

<pre>
convert -size 256x128 -define gradient:direction=east gradient:black-white linear_gradient_east.png
convert -size 256x128 -define gradient:angle=90 gradient:black-white linear_gradient_east.png
</pre>
<p><img src="../images/gradients/linear_gradient_east.png" width="256" height="128" /></p>


<p>Examples of radial gradients going from black in the center to white at the boundary for the cases of "maximum/circle/default", "minimum", "diagonal", "ellipse" and 45 degree rotated ellipse, respectively, follow below.</p>


<pre>
convert -size 256x128 radial-gradient:black-white radial_gradient_maximum.png
convert -size 256x128 -define gradient:radii=128,128 radial-gradient:black-white radial_gradient_maximum.png
</pre>
<p><img src="../images/gradients/radial_gradient_maximum.png" width="256" height="128" /></p>

<pre>
convert -size 256x128 -define gradient:extent=minimum radial-gradient:black-white radial_gradient_minimum.png
convert -size 256x128 -define gradient:radii=64,64 radial-gradient:black-white radial_gradient_minimum.png
</pre>
<p><img src="../images/gradients/radial_gradient_minimum.png" width="256" height="128" /></p>

<pre>
convert -size 256x128 -define gradient:extent=diagonal radial-gradient:black-white radial_gradient_diagonal.png
</pre>
<p><img src="../images/gradients/radial_gradient_diagonal.png" width="256" height="128" /></p>

<pre>
convert -size 256x128 -define gradient:extent=ellipse radial-gradient:black-white radial_gradient_ellipse.png
convert -size 256x128 -define gradient:radii=128,64 radial-gradient:black-white radial_gradient_ellipse.png
</pre>
<p><img src="../images/gradients/radial_gradient_ellipse.png" width="256" height="128" /></p>

<pre>
convert -size 256x256 -define gradient:radii=128,64 -define gradient:angle=45 radial-gradient:black-white radial_gradient_ellipse_angle45.png
</pre>
<p><img src="../images/gradients/radial_gradient_ellipse_angle45.png" width="256" height="256" /></p>

</div>

  <footer class="magick-footer">
    <p><a href="support.html">Donate</a> •
     <a href="sitemap.html">Sitemap</a> •
    <a href="links.html">Related</a> •
    <a href="security-policy.html">Security</a> •
    <a href="architecture.html">Architecture</a>
</p>
    <p><a href="gradient.html#">Back to top</a> •
    <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
    <a href="https://www.imagemagick.org/script/contact.php">Contact Us</a></p>
        <p><small>© 1999-2017 ImageMagick Studio LLC</small></p>
  </footer>
</div><!-- /.container -->

  <script src="https://localhost/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="../js/magick.html"></script>
</div>
</body>
</html>
<!-- Magick Cache 24th December 2016 11:33 -->