Imagemagick 按百分比绘制饼图
如何使用ImageMagick按百分比绘制饼图 例如:如果有一个像45这样的值以百分比的形式给出——如何使用Ruby或bash命令绘制一个只有45%的饼图 如果使用ImageMagick的Imagemagick 按百分比绘制饼图,imagemagick,Imagemagick,如何使用ImageMagick按百分比绘制饼图 例如:如果有一个像45这样的值以百分比的形式给出——如何使用Ruby或bash命令绘制一个只有45%的饼图 如果使用ImageMagick的draw操作符,需要如何设置圆弧值?或者如何从整数值计算acr值 例如: 我试图阅读并理解这些示例,但圆弧计算对我来说是个谜。ImageMagick的draw操作实现了中定义的SVG“路径” 不支持通过提供简单的“度”角度参数进行绘制。需要使用三角函数计算每个路径和包含圆弧的子路径的端点坐标。(必须使用相对于当
draw
操作符,需要如何设置圆弧值?或者如何从整数值计算acr值
例如:
我试图阅读并理解这些示例,但圆弧计算对我来说是个谜。ImageMagick的
draw
操作实现了中定义的SVG“路径”
不支持通过提供简单的“度”角度参数进行绘制。需要使用三角函数计算每个路径和包含圆弧的子路径的端点坐标。(必须使用相对于当前点的绝对值或相对值,具体取决于使用的精确圆弧操作符;另请参见下面的示例。)
一般的
在SVG(以及ImageMagick)中,“路径”表示对象的轮廓。还支持绘制复合路径:复合路径是具有子路径的路径,其中每个子路径由单个moveto
和一个或多个line
或curve
操作组成
可通过以下操作定义对象的轮廓:
设置一个新的当前点。移动到:
使用
表示绝对运动,使用M
表示相对运动M
画一条直线。lineto:
使用
表示绝对运动,使用L
表示相对运动L
绘制贝塞尔曲线。曲线to:
使用
,C
,C
和S
绘制。(我们不需要这些用于饼图)。S
使用
,Q
,Q
和T
绘制。(饼图不需要这些)T
画一条椭圆或圆弧。圆弧:
使用
和A
绘制。对于椭圆==圆的特殊情况,我们需要这些饼图A
通过绘制一条到最后一个移动目标的线来关闭当前形状。 使用关闭路径:
或Z
;两者具有相同的效果:它们结束当前子路径,并导致从当前点到当前子路径的初始点绘制一条自动直线Z
- 如果“closepath”后面紧跟着“moveto”,则“moveto”标识下一个子路径的起点
- 如果“closepath”后面紧接着任何其他命令,则下一个子路径将从与当前子路径相同的初始点开始
convert \
-size 280x280 xc:yellow \
-stroke black \
-fill blue \
-draw "path 'M 120,140 L 120,40 A 100,100 0 0,1 137.36,41.52 Z'" \
red-pie-wedge.jpg
结果:M
)位于像素坐标(120/140)处L
)从那里垂直向上绘制坐标(120/40)A
)从坐标(120/40)转到坐标(137.36/41.52)。我将把它留给读者去做三角计算,从而得出坐标(137.36/41.52)作为弧的终点。提示:
- 楔角为10°,100*sin(10°)=17.36,因为本例中的半径为100,因此120+17.36=137.36李>
- cos(10°)=0.9848和100*(1-cos(10°)=1.52,因此40+1.52=41.52
Z
),返回到路径的起点convert \
-size 280x280 xc:yellow \
-stroke black \
-fill blue -draw "path 'M 120,140 L 120.00,40.00 A 100,100 0 0,1 137.36,41.52 Z'" \
-fill silver -draw "path 'M 120,140 L 137.36,41.52 A 100,100 0 0,1 154.20,46.00 Z'" \
-fill red -draw "path 'M 136,130 L 170.20,36.00 A 100,100 0 0,1 236.00,130.00 Z'" \
-fill green -draw "path 'M 120,140 L 220.00,140.00 A 100,100 0 1,1 120.00,40.00 Z'" \
-fill black -stroke none -pointsize 10 \
-draw "text 119,37 '10' text 142,41 '10' text 182,36 '70' text 226,156 '270'" \
piechart.jpg
结果:ImageMagick的
draw
操作实现中定义的SVG“路径”
不支持通过提供简单的“度”角度参数进行绘制。需要使用三角函数计算每个路径和包含圆弧的子路径的端点坐标。(必须使用相对于当前点的绝对值或相对值,具体取决于使用的精确圆弧操作符;另请参见下面的示例。)
一般的
在SVG(以及ImageMagick)中,“路径”表示对象的轮廓。还支持绘制复合路径:复合路径是具有子路径的路径,其中每个子路径由单个moveto
和一个或多个line
或curve
操作组成
可通过以下操作定义对象的轮廓:
设置一个新的当前点。移动到:
使用
表示绝对运动,使用M
表示相对运动M
画一条直线。lineto:
使用
表示绝对运动,使用L
表示相对运动L
绘制贝塞尔曲线。曲线to:
使用
,C
,C
和S
绘制。(我们没有S
convert \ -size 280x280 xc:yellow \ -stroke black \ -fill blue -draw "path 'M 120,140 L 120.00,40.00 A 100,100 0 0,1 137.36,41.52 Z'" \ -fill silver -draw "path 'M 120,140 L 137.36,41.52 A 100,100 0 0,1 154.20,46.00 Z'" \ -fill red -draw "path 'M 136,130 L 170.20,36.00 A 100,100 0 0,1 236.00,130.00 Z'" \ -fill green -draw "path 'M 120,140 L 220.00,140.00 A 100,100 0 1,1 120.00,40.00 Z'" \ -fill black -stroke none -pointsize 10 \ -draw "text 119,37 '10' text 142,41 '10' text 182,36 '70' text 226,156 '270'" \ piechart.jpg