正方形の写真を撮る iOS カメラ ビューを実装しようとしています (Instagram に似ています)。私のコードは以下に表示されます。フレームの高さがフレームの幅と等しくなるように設定されている最初の部分は、期待どおりに機能しており、ユーザーには正方形のビューが表示されます。この問題は、後で CGImageCreateWithImageInRect を使用してフレーム (CGRect プロパティ) を画像データに適用しようとしたときに発生します。フレーム矩形を画像とともにこのメソッドに渡します。ただし、結果は正方形になるようにトリミングされていません。代わりに、画像は iOS カメラの元のデフォルトの寸法を保持します。誰かが私が間違ったことを教えてもらえますか? Apple のドキュメントからの私の理解では、CGImageCreateWithImageInRect は、いくつかの開始 x/y 座標から Rect 形状の画像領域を選択する必要があります。でもそうじゃない」
//Set the frame size to be square shaped
UIView *view = imagePicker.view;
frame = view.frame;
frame.size.height = frame.size.width;
view.frame = frame;
//Crop the image to the frame dimensions using CGImageCreateWithImageInRect
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self.popoverController dismissPopoverAnimated:true];
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info
objectForKey:UIImagePickerControllerOriginalImage];
croppedImage = (__bridge UIImage *)(CGImageCreateWithImageInRect((__bridge CGImageRef)(image), frame));
imageView.image = croppedImage;
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// Code here to support video if enabled
}
}