我正在努力寻找合适的方法来调整大小和裁剪和图像,并有一个重点区域。在我的情况下,焦点区域是在图像中检测到的面部,我需要确保在裁剪版本中可以看到此区域。
我有专注区域,例如。 face_height,face_width,face_center_x和face_center_y。这些值是原始图像尺寸的百分比。
我想做的是获得一个例如。 60x60缩略图。通常的方法是调整大小,使图像的高度或宽度等于60px,然后从中心裁剪60x60,如下所示:
mogrify -resize 60x -gravity 'Center' -crop 60x60 image.jpg
可以采取什么方法将我的作物集中在给定区域?
我正在考虑一个包含多条路径的解决方案:
有更聪明的方法吗?你能试试一些示例代码吗?
谢谢!
答案 0 :(得分:3)
我首先在脚本或程序中进行算术运算,然后将精确坐标输入ImageMagick。
算术步骤:
face_height
,face_width
,face_center_x
和face_center_y
转换为像素值。你需要矩形缩略图,所以选择最长的一面并使用:
longest_side = max(face_height, face_width)
现在您可以计算作物的左上角:
crop_x = face_center_x - longest_side / 2
crop_y = face_center_y - longest_side / 2
如果四个裁剪角落中的任何一个落在图片尺寸之外,请进行调整:
crop_x
和crop_y
都应为> = 0 crop_x + longest_side
应小于图片宽度crop_y + longest_side
应小于图像高度计算完这些后,ImageMagick调用非常简单:
mogrify -crop {longest_side}x{longest_side}+{crop_x}+{crop_y} -resize 60x60 image.jpg