⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/gradient/)

图像渐变

图像渐变在线性、圆形或椭圆形的形状内,生成两种颜色之间的平滑过渡。

对于线性渐变,运算符为以下之一:

gradient:
gradient:_fromColor_
gradient:_fromColor_ -_toColor_

除非被覆盖,默认的 fromColor 为白色,toColor 为黑色。例如 gradient:gray 返回从灰色到黑色的渐变。

对于放射状渐变,运算符为以下之一:

radial-gradient:
radial-gradient:_fromColor_ -_toColor_

线性渐变的默认设置将 fromColor 置于图像顶部,toColor 置于图像底部。同样,放射状渐变的默认设置将 fromColor 置于图像中心,toColor 置于图像边界。

渐变颜色可以是 https://imagemagick.org/color/ 中定义的任意有效颜色。命名颜色 black/white/grayXX 以及 gray(XX[%]) 是非线性灰度。在 Linux 系统中,请将 rgb(a) 和十六进制颜色用引号括起来。如果使用变量作为取值,请使用双引号。

下面是一个线性(相对于放射状)渐变的示例:

magick -size 256x256 gradient: linear_gradient.png
magick -size 256x256 gradient:white-black linear_gradient.png

linear gradient

如果你想要放射状渐变,请尝试:

magick -size 256x256 radial-gradient: radial_gradient.png
magick -size 256x256 radial-gradient:white-black radial_gradient.png

radial gradient

如果你想要非线性灰度渐变,请在保存输出前加上 -colorspace RGB -colorspace gray。例如:

magick -size 256x256 gradient: linear_gradient.png
magick -size 256x256 gradient:white-black -colorspace RGB -colorspace gray linear_linear_gradient.png


magick -size 256x256 radial-gradient: radial_gradient.png
magick -size 256x256 radial-gradient:white-black -colorspace RGB -colorspace gray linea_radial_gradient.png

渐变会受到以下 define 的影响:

-define gradient:vector=x1,y1, x2,y2 指定线性渐变的方向,从 vector1 (x1,y1) 指向 vector2 (x2,y2)。fromColor 位于矢量位置 x1,y1,toColor 位于矢量位置 x2,y2。
-define gradient:center=x,y 指定放射状渐变中心点的坐标。默认为图像的中心。
-define gradient:radii=x,y 指定渐变的 x 和 y 半径。如果 x 半径与 y 半径相等,放射状渐变的形状将为圆形。如果不同,则形状将为椭圆。默认值为图像半宽与半高中的较大者。
-define gradient:angle=angle in degrees 对于线性渐变,以北(上)为基准、顺时针为正,指定从 fromColortoColor 的渐变方向。对于放射状渐变,以顺时针为正,指定渐变相对其正常 X-Y 朝向的旋转量。
-define gradient:bounding-box=widthxheight+x+y 将渐变限定在比图像尺寸更大或更小的区域内。如果外接矩形定义的区域小于图像,则 fromColor 为背景的颜色。

我们还支持两个便捷的 define,用于设置线性渐变方向和放射状渐变形状。

-define gradient:direction={NorthWest, North, Northeast, West, East, SouthWest, South, SouthEast} 指定线性渐变朝向上/下/左/右或对角线方向的方向。
-define gradient:extent={Circle, Diagonal, Ellipse, Maximum, Minimum} 指定以图像为中心的放射状渐变的形状。即便对于矩形图像,Circle 和 Maximum 也会绘制半径等于图像半宽与半高中较大者的圆形放射状渐变。Circle 和 Maximum 选项都等价于默认的放射状渐变。Minimum 选项即便对于矩形图像,也会绘制半径等于图像半宽与半高中较小者的圆形放射状渐变。Diagonal 选项即便对于矩形图像,也会绘制半径等于图像半对角线的圆形放射状渐变。Ellipse 选项对于矩形图像绘制半径等于图像半宽和半高的椭圆形放射状渐变。

示例

默认的线性渐变也可以通过以下任意一种方式生成(或通过反转方向并交换 fromColortoColor 来实现):

magick -size 256x128 -define gradient:direction=north gradient:black-white linear_gradient_default.png
magick -size 256x128 -define gradient:angle=0 gradient:black-white linear_gradient_default.png

linear gradient

以下命令

magick -size 128x256 gradient: -rotate 90 linear_gradient_east.png

的等价结果可通过以下任意一种方式生成(或通过反转方向并交换 fromColortoColor 来实现):

magick -size 256x128 -define gradient:direction=east gradient:black-white linear_gradient_east.png
magick -size 256x128 -define gradient:angle=90 gradient:black-white linear_gradient_east.png

radial gradient east

下面依次给出从中心黑色到边界白色的放射状渐变示例,分别对应 “maximum/circle/默认”“minimum”“diagonal”“ellipse” 以及旋转 45 度的椭圆这几种情况。

magick -size 256x128 radial-gradient:black-white radial_gradient_maximum.png
magick -size 256x128 -define gradient:radii=128,128 radial-gradient:black-white radial_gradient_maximum.png

radial gradient maximum

magick -size 256x128 -define gradient:extent=minimum radial-gradient:black-white radial_gradient_minimum.png
magick -size 256x128 -define gradient:radii=64,64 radial-gradient:black-white radial_gradient_minimum.png

magick -size 256x128 -define gradient:extent=diagonal radial-gradient:black-white radial_gradient_diagonal.png

magick -size 256x128 -define gradient:extent=ellipse radial-gradient:black-white radial_gradient_ellipse.png
magick -size 256x128 -define gradient:radii=128,64 radial-gradient:black-white radial_gradient_ellipse.png

radial gradient ellipse

magick -size 256x256 -define gradient:radii=128,64 -define gradient:angle=45 radial-gradient:black-white radial_gradient_ellipse_angle45.png

radial gradient ellipse angle 45