如何在 php imagemagick 中指定所有四个角坐标的叠加图像

How to specify an overlay image all four corners coordinates in php imagemagick

我是 Imagemagick / Imagick 的初学者,所以请多多包涵。我的问题看起来很简单,但我找不到解决方案,也找不到任何帮助。请查看下图 - 我正在尝试通过以像素为单位指定所有四个角坐标来创建图像。

我查看了 Affine Distortion 但那个函数对我来说太复杂了,有时需要一段时间才能执行,而且当它起作用时 - 结果非常不可预测(图像旋转是错误的,图像的某些部分被删除或放错了位置等)因此,如果可能的话,我不想使用仿射失真。

当然,如果不能只指定每个角的坐标,非常感谢能帮助我确定前进方向。我想使用 Imagick,但如果使用 GD 或类似工具可能更好,我对此持开放态度。

在没有看到源图像和预期结果的情况下,我假设您正在尝试透视失真。这意味着您想要拍摄图像,并将 MBR 坐标转换为一组预定义的点。

如果我得到一张 400x400 的棋盘格图像,并想将其扭曲为上面列出的点,则可以使用以下 ImageMagick 命令。

convert -size 400x400 pattern:checkerboard \
        -virtual-pixel transparent \
        -mattecolor transparent \
        -distort Perspective '0,0 50,153  400,0 240,40 0,400 315,355 400,400 336,156' \
        distorted_checkerboard.png

-distort Perspective '... point matrix ...'内容如下

  Origin Point  => Finial Point
    0,  0       =>  50,153       (top left)
  400,  0       => 240, 40       (top right)
    0,400       => 315,255       (bottom left)
  400,400       => 336,155       (bottom right)