我试图通过PHP在ImageMagick中改变Plane 2Cylinder扭曲的Angular 。
为了帮助解释我在寻找什么,我创建了这个图形:
您可以看到红色块的下部比顶部具有更大的半径,就好像您是从上方中心查看此。
我尝试了可选的center_x/y字段:
$label->distortImage(\Imagick::DISTORTION_PLANE2CYLINDER, [28,0,100], true);
在每个x和y上具有0到1000之间的各种设置,结果为零。
有没有人有什么见解或提示?我已经彻底搜索,但找不到任何相关的。
3条答案
按热度按时间k5ifujac1#
我还没有找到解决方案与扭曲_PLANE2CYLINDER,但只是作为一个想法,一个铁杆的Angular 可能会减少强度的差异,并可能成为一个点,为进一步扭曲,例如。圆形和径向扭曲方法(弧)。
加
可以给予你想要的半径在顶部和底部。
piok6c0g2#
编程解决方案
我用下面的代码解决了这个问题-工作起来像一个魅力,并提供了正确的结果。要知道,Angular 还取决于观看者的距离,而不仅仅是眼睛的水平。
参考/学分转到:
另请参阅:如何在svg图像上应用枕形失真效果(以便可靠地读取圆形表面上的二维码)?
非编程替代
如果你只是想在玻璃杯/jar/瓶子上贴一个二维码,把它放在顶部或底部。
pxq42qpu3#
所以,在所有这些工作试图弄清楚如何使用面具,过滤器等来做到这一点之后...解决方案实际上非常简单。
我最终只是将主图像放在一个更高的透明图像的顶部(从顶部向下正确的距离以创建透视图),然后将plane 2cylindar应用于整个图像。
太疯狂了,我没有看到开始。谢谢你的想法和帮助。
编辑-关于如何实现这一点的更多细节。