我有一个应用程序,用户可以从相机拍摄照片并将其放置在全屏 ImageView 上。现在用户可以在其上删除矩形/正方形 View 并将覆盖 View 的坐标/大小发送到服务器。问题是我根据屏幕尺寸获取 View 的坐标,但我希望尺寸应该根据 ImageView 上的图像,因为通常来自相机的图像的分辨率比屏幕大。
请为我提供一种根据 uiimage 而不是屏幕获取叠加 View 大小的方法
编辑:例如:如果用户在图像中的人脸上绘制 View 并将裁剪 View 的坐标发送到服务器。那么如果坐标是根据屏幕而不是根据uiimage本身,那么坐标将很难与真实图像同步
最佳答案
答案很简单:
您拥有 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
是你的方 block 相对于 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 大得多,所以你必须计算一个系数来调整你的平方。
仅此而已!
关于iphone - 如何根据ios sdk中放置的uiimage的坐标获取 View 的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988763/