2

我有一个应用程序,用户从相机拍摄照片并将其放置在全屏图像视图上。现在用户可以在其上查看矩形/正方形视图并将覆盖视图的坐标/大小发送到服务器。问题是我根据屏幕尺寸获取视图的坐标,但我希望尺寸应该根据 imageview 上的图像,因为通常来自相机的图像比屏幕具有更大的分辨率。

请为我提供一种根据 uiimage 而不是屏幕获取覆盖视图大小的方法

编辑:例如:如果用户在图像中的人脸上绘制视图并将裁剪视图的坐标发送到服务器。那么如果坐标是根据屏幕而不是根据uiimage本身就很难与真实图像同步坐标

4

1 回答 1

2

答案很简单:

你有你的 UIImageView 的框架和你绘制的正方形的框架(都相对于self.view

你只需要找到你的正方形的原点,相对于UIImageView.

只需减去:

//get the frame of the square
CGRect *correctFrame = square.frame;

//edit square's origin
correctFrame.origin.x -= imageView.frame.origin.x;
correctFrame.origin.y -= imageView.frame.origin.y;

现在correctFrame是相对于 的正方形的框架imageView,而square.frame仍然相对于self.view(因为我们没有更改它)

要根据图像分辨率获取帧,请执行与上述完全相同的操作,然后:

float xCoefficient = imageResolutionWidth / imageView.frame.size.width;
float yCoefficient = imageResolutionHeight / imageView.frame.size.height;

correctFrame.origin.x *= xCoefficient;
correctFrame.origin.y *= yCoefficient;
correctFrame.size.width *= xCoefficient;
correctFrame.size.height *= yCoefficient;

为什么:图像分辨率比 imageView.frame 大得多,所以你必须计算一个系数来调整你的正方形。

就这样!

于 2012-08-16T14:26:54.460 回答