Php 智能图像裁剪

Php 智能图像裁剪,php,image,Php,Image,我一直在试图向我的主题客户解释,通过智能地找出最佳和正确的位置来裁剪图像根本不是一件容易的事情。我甚至怀疑这是否100%可能 比如说,在肖像画中,如果要将图像裁剪成正方形或比例,是否有可能聚焦在脸部并相应地进行裁剪 如果你想知道更多的细节,这就是问题所在 在我看来,您的客户面临的问题是纵横比 您可以从中确定源纵横比和裁剪/调整。只需使用getImageGeometry() 或者,如果使用GD: 让用户选择要裁剪的照片部分。将偏移量添加到GD的裁剪参数。祝你好运 裁剪图像的“正确”位置是主观的。

我一直在试图向我的主题客户解释,通过智能地找出最佳和正确的位置来裁剪图像根本不是一件容易的事情。我甚至怀疑这是否100%可能

比如说,在肖像画中,如果要将图像裁剪成正方形或比例,是否有可能聚焦在脸部并相应地进行裁剪

如果你想知道更多的细节,这就是问题所在

在我看来,您的客户面临的问题是纵横比

您可以从中确定源纵横比和裁剪/调整。只需使用
getImageGeometry()

或者,如果使用GD:


让用户选择要裁剪的照片部分。将偏移量添加到GD的裁剪参数。祝你好运

裁剪图像的“正确”位置是主观的。确定什么对场景构图是重要的,这既是科学也是艺术。如果计算机算法能够完美地解决这个问题,你可以使用它(以及遍布世界各地的大量相机)赢得每年的国家地理摄影比赛:-)


这就是说,如果你能更精确地定义图像中感兴趣的部分——比如你提到的面孔——那么问题就从“几乎不可能”变成了“非常困难”。您可以使用人脸检测算法,然后裁剪到包含所有人脸的最小边界框。

一个流行的解决方案是调整图像的大小并居中,然后裁剪剩余的部分:如果原始图像太宽,则裁剪为左和右;如果原始图像太高,则裁剪为顶部和底部。由于前面提到的原因,它还远远不够完美,但很容易实现自动化

在此要点中,使用gd库执行此操作的示例代码:

(希望您已经找到了解决方案,因为这是一个非常古老的问题。)我发现了一些有帮助的选项:

  • -它支持一些高级裁剪方法,如自动裁剪和基于人脸检测的裁剪。我目前正在探索这个爱好项目
  • -我认为这有点过分了,但你可以用它来裁剪肖像,因为它有很好的人脸检测和裁剪提示。我把它用于业余项目,效果非常好
  • -这个新的PHP图形库具有智能裁剪功能,它可以检测图像的重要区域,并确保在裁剪时保留图像(我还没有尝试过)

您可以尝试ImageKit.io。它提供了开箱即用的功能。它在内部使用人脸和特征检测来进行智能裁剪所需的计算。ImageKit还有一种面部裁剪模式,可以从原始图像中选择面部以创建缩略图。

用户是否无法选择裁剪图像的位置?也可以使用ImageKit.io进行智能裁剪。类似于Cloudinary。