当输入图像旋转给定度数然后裁剪以避免任何非图像区域同时保持原始图像纵横比时,如何找出最终图像的宽度和高度。
例子:
最佳答案
- 红色矩形是具有原始纵横比的原始图像。
W/t
矩形(由绿色和黄色三角形包围)已旋转 图片宽高比为extend=True
。
这里是获取w
和h
的方法。
image = Image.open(...)
rotated = image.rotate(degrees, Image.BICUBIC, True)
aspect_ratio = float(image.size[0]) / image.size[1]
rotated_aspect_ratio = float(rotated.size[0]) / rotated.size[1]
angle = math.fabs(degrees) * math.pi / 180
if aspect_ratio < 1:
total_height = float(image.size[0]) / rotated_aspect_ratio
else:
total_height = float(image.size[1])
h = total_height / (aspect_ratio * math.sin(angle) + math.cos(angle))
w = h * aspect_ratio
现在旋转后的图像可以在中心裁剪为 w
xh
尺寸
得到最终图像。
关于python - 裁剪具有相同宽高比的旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346670/