1

我想围绕图像中的某个点旋转图像。我正在使用魔术++。如何选择旋转轴?有旋转功能,但它只允许我设置度数而不选择轴。

4

1 回答 1

2

您需要创建仿射变换来映射旋转和过渡。例子...

Magick::Image img("rose:");
double
    originX = 50,
    originY = 75,
    angle = 45.0,
    radians = angle * atan2(1, 1)/45.0,
    sx = cos( radians ),
    rx = sin( radians ),
    ry = -rx,
    sy = sx,
    tx = originX * sx - originY * rx,
    ty = originX * rx + originY * sx;
Magick::DrawableAffine matrix(sx, rx, ry, sy, tx, ty);
img.virtualPixelMethod(Magick::TransparentVirtualPixelMethod);
img.affineTransform(matrix);

可以在Affine Matrix Transforms使用文档中找到创建仿射矩阵的详细示例,包括共享和原点转换。脚本的有用链接。

于 2015-08-24T20:35:40.527 回答