5

正方形の写真を撮る 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
}
}
4

2 に答える 2

0

フレームの設定が間違っています。作成しようとしているものを作成する方法については、Apple のこのサンプル コードをご覧になることをお勧めします。

https://developer.apple.com/library/mac/#samplecode/VirtualScanner/Listings/Sources_VirtualScanner_m.html#//apple_ref/doc/uid/DTS40011006-Sources_VirtualScanner_m-DontLinkElementID_9

以下を見てください。

- (ICAError)startScanningWithParams:(ICD_ScannerStartPB*)pb

関数

于 2012-10-10T10:35:49.810 に答える
0

あなたは正しくやっています。唯一のことは、フレーム プロパティをピッカー ビューと同じに設定していると思うので、最終的なサイズは元のサイズと同じです。

フレームを pickerView.view.frame よりも小さく設定してみてください。等しくはありません

これをチェックしてください

UIImage のトリミング

于 2012-10-07T16:06:48.657 に答える