如何根据放置在ios sdk中的uiimage的坐标获取视图的坐标?

时间:2012-08-16 13:55:42

标签: iphone ios4 uiimageview uiimage

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

请为我提供一种根据uiimage而非屏幕获取叠加视图大小的方法

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

1 个答案:

答案 0 :(得分:1)

答案很简单:

你有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要大得多,所以你必须计算一个可以调整你的方块的系数。

这就是全部!