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は に対して相対的な正方形のフレームですが、imageViewsquare.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 に答える