ImageMagick 梯度比
ImageMagick gradient ratio
如何调整渐变的颜色比例?
我目前使用以下方法创建我的渐变。
convert -size 200x600 gradient:none-black output.png
我不太确定我理解了。但是如果你想以 90% 透明(10% 不透明黑色)开始并以黑色结束。你可以这样做:
convert -size 200x600 gradient:"graya(0,0.1)-black" output.png
graya 表示带有 alpha 的灰色。所以 graya(0,0.1) 是灰色 (0) 或黑色,不透明度为 0.1,所以 90% 透明。
也许这就是你想要的:
正常 50-50:
convert -size 200x600 gradient:red-blue red_blue1.png
60-40:
rr=`convert xc: -format "%[fx:0.6*255]" info:`
bb=`convert xc: -format "%[fx:0.4*255]" info:`
convert -size 200x600 gradient:"rgb($rr,0,$bb)-rgb(0,0,255)" red_blue2.png
或者这就是您想要的:
bb=`convert xc: -format "%[fx:0.1*255]" info:`
convert -size 200x600 gradient:"rgb(255,0,$bb)-rgb(0,0,255)" red_blue3.png
也许您想要这个,您可以在图像高度的 20% 处获得 half-red/half-blue 颜色。它是通过创建两个不同长度的渐变并将它们背靠背放置来完成的:
midcolour="rgb(127,0,127)"
convert -size 100x20 gradient:red-"$midcolour" \
-size 100x80 gradient:"$midcolour"-blue \
-append result.png
另一种方法是将 3 个单个像素放在一行中,然后将其调整为您想要的大小。我知道你希望中间部分是 40% 的红色和 60% 的蓝色,但是,为了便于查看,我将其设为柠檬绿:
convert -size 1x1 xc:red xc:lime xc:blue -append -resize 100x100\! result.png
您可以将 lime
更改为 "rgb(100,0,155)"。
我有一个名为 multigradient 的 Imagemagick bash shell 脚本,它可以满足您的需求。它允许您创建多种颜色的渐变,每种颜色都有停止点以设置它们的开始位置。例如:
multigradient -w 200 -h 600 -s "blue 0 red 80" -d to-top result.png
第一种颜色必须从0开始,但方向可以有多种选择。在这里,我从下到上,底部是纯蓝色,从底部到顶部从 80 开始是纯红色
(See)
虽然至少提供了一个可接受的解决方案,但这里还有一些其他想法...
示例 1:此命令创建完成尺寸的红蓝色渐变,将其裁剪为上半部分和下半部分,将它们的大小调整为输入高度的 40% 和 60%,然后将它们附加回去以制作单个图片。刚开始在垂直中心的颜色现在是从顶部向下 40%,并且从那里上下有干净的渐变。
convert -size 200x600 gradient:red-blue -crop 1x2@ \
\( -clone 0 -resize 100x40% \) \( -clone 1 -resize 100x60% \) \
-delete 0,1 -append result.png
它将渐变图像分成上半部分和下半部分,然后在括号内将每个图像调整为所需的比例。之后它删除括号前的 50/50 裁剪,附加两个调整大小的剩余图像,并写入输出。
示例 2:下一个示例首先在最终维度中创建红蓝渐变,然后设置变量以保存顶部颜色、中间颜色和底部颜色。
然后在第一个括号内克隆图像并将其裁剪为原始高度的 60%。它使用“-sparse-color”来填充从 "color1" 到 "color2" 的渐变。
在第二个括号内,它将图像克隆并裁剪为原始高度的 40%,然后再次使用“-sparse-color”,用从 "color2" 到 "color3" 的渐变填充它。
创建这两个渐变后,删除原始渐变,将另外两个附加到一起,然后写入输出。
convert -size 200x600 gradient:red-blue \
-set option:color1 "%[pixel:p{0,0}]" \
-set option:color2 "%[pixel:p{0,h/2}]" \
-set option:color3 "%[pixel:p{0,h}]" \
\( -clone 0 -extent 100x60% \
-sparse-color barycentric "0,0 %[color1] 0,%[h] %[color2]" \) \
\( -clone 0 -extent 100x40% \
-sparse-color barycentric "0,0 %[color2] 0,%[h] %[color3]" \) \
-delete 0 -append result.png
如何调整渐变的颜色比例?
我目前使用以下方法创建我的渐变。
convert -size 200x600 gradient:none-black output.png
我不太确定我理解了。但是如果你想以 90% 透明(10% 不透明黑色)开始并以黑色结束。你可以这样做:
convert -size 200x600 gradient:"graya(0,0.1)-black" output.png
graya 表示带有 alpha 的灰色。所以 graya(0,0.1) 是灰色 (0) 或黑色,不透明度为 0.1,所以 90% 透明。
也许这就是你想要的:
正常 50-50:
convert -size 200x600 gradient:red-blue red_blue1.png
60-40:
rr=`convert xc: -format "%[fx:0.6*255]" info:`
bb=`convert xc: -format "%[fx:0.4*255]" info:`
convert -size 200x600 gradient:"rgb($rr,0,$bb)-rgb(0,0,255)" red_blue2.png
或者这就是您想要的:
bb=`convert xc: -format "%[fx:0.1*255]" info:`
convert -size 200x600 gradient:"rgb(255,0,$bb)-rgb(0,0,255)" red_blue3.png
也许您想要这个,您可以在图像高度的 20% 处获得 half-red/half-blue 颜色。它是通过创建两个不同长度的渐变并将它们背靠背放置来完成的:
midcolour="rgb(127,0,127)"
convert -size 100x20 gradient:red-"$midcolour" \
-size 100x80 gradient:"$midcolour"-blue \
-append result.png
另一种方法是将 3 个单个像素放在一行中,然后将其调整为您想要的大小。我知道你希望中间部分是 40% 的红色和 60% 的蓝色,但是,为了便于查看,我将其设为柠檬绿:
convert -size 1x1 xc:red xc:lime xc:blue -append -resize 100x100\! result.png
您可以将 lime
更改为 "rgb(100,0,155)"。
我有一个名为 multigradient 的 Imagemagick bash shell 脚本,它可以满足您的需求。它允许您创建多种颜色的渐变,每种颜色都有停止点以设置它们的开始位置。例如:
multigradient -w 200 -h 600 -s "blue 0 red 80" -d to-top result.png
第一种颜色必须从0开始,但方向可以有多种选择。在这里,我从下到上,底部是纯蓝色,从底部到顶部从 80 开始是纯红色
(See)
虽然至少提供了一个可接受的解决方案,但这里还有一些其他想法...
示例 1:此命令创建完成尺寸的红蓝色渐变,将其裁剪为上半部分和下半部分,将它们的大小调整为输入高度的 40% 和 60%,然后将它们附加回去以制作单个图片。刚开始在垂直中心的颜色现在是从顶部向下 40%,并且从那里上下有干净的渐变。
convert -size 200x600 gradient:red-blue -crop 1x2@ \
\( -clone 0 -resize 100x40% \) \( -clone 1 -resize 100x60% \) \
-delete 0,1 -append result.png
它将渐变图像分成上半部分和下半部分,然后在括号内将每个图像调整为所需的比例。之后它删除括号前的 50/50 裁剪,附加两个调整大小的剩余图像,并写入输出。
示例 2:下一个示例首先在最终维度中创建红蓝渐变,然后设置变量以保存顶部颜色、中间颜色和底部颜色。
然后在第一个括号内克隆图像并将其裁剪为原始高度的 60%。它使用“-sparse-color”来填充从 "color1" 到 "color2" 的渐变。
在第二个括号内,它将图像克隆并裁剪为原始高度的 40%,然后再次使用“-sparse-color”,用从 "color2" 到 "color3" 的渐变填充它。
创建这两个渐变后,删除原始渐变,将另外两个附加到一起,然后写入输出。
convert -size 200x600 gradient:red-blue \
-set option:color1 "%[pixel:p{0,0}]" \
-set option:color2 "%[pixel:p{0,h/2}]" \
-set option:color3 "%[pixel:p{0,h}]" \
\( -clone 0 -extent 100x60% \
-sparse-color barycentric "0,0 %[color1] 0,%[h] %[color2]" \) \
\( -clone 0 -extent 100x40% \
-sparse-color barycentric "0,0 %[color2] 0,%[h] %[color3]" \) \
-delete 0 -append result.png