2

これは私のアプリのカメラ オーバーレイです。

ここに画像の説明を入力

黄色の四角は、この部分 (カメラ内) 内の写真のみが保存されることをユーザーに示します。作物のようです。

そのキャプチャ画像を保存すると、ズームされた写真 [大きくズームされた写真] が保存されます。

ここに画像の説明を入力

私が見つけたのは、写真を撮ったときのサイズです{2448, 3264}

こんな感じで画像をトリミングしています。

- (UIImage *)imageByCroppingImage:(UIImage *)image toSize:(CGSize)size
{
    double x = (image.size.width - size.width) / 2.0;
    double y = (image.size.height - size.height) / 2.0;

    CGRect cropRect = CGRectMake(x, y, size.height, size.width);
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];

    if (image) {
        UIImage *newImage = [self imageByCroppingImage:image toSize:CGSizeMake(300.f, 300.f)];
        UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil);
    }
}

ノート、

  • トリミングを実行する前に方向が修正されました。これを使用して、http://pastebin.com/WYUkDLS0

  • カメラの黄色い四角も同じサイズで、幅=300、高さ=300です。

  • フロントカメラを設定UIImagePickerControllerすると、トリミングされた画像の完璧な出力が得られます。はい、これは本当に奇妙です!

  • 私はここからすべてを試しましhttps://github.com/Nyx0uf/NYXImagesKitでも役に立ちません。

アイデア/提案はありますか?


アップデート:

この質問から、UIImage を 1:1 のアスペクト比 (正方形) にトリミングしようとしていますが、画像が拡大され続け、画像がぼやけてしまいます。なんで?

私はこのように@DrummerBの答えに従いました、

    CGFloat originalWidth = image.size.width * image.scale;
    CGFloat originalHeight = image.size.height * image.scale;
    float smallestDimension = fminf(originalWidth, originalHeight);
    CGRect square = CGRectMake(0, 0, smallestDimension, smallestDimension);
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], square);
    UIImage *squareImage = [UIImage imageWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation];
    UIImageWriteToSavedPhotosAlbum(squareImage, nil, nil, nil);
    CGImageRelease(imageRef);

これは私が捉えたもので、

ここに画像の説明を入力

そして、それは私に次の結果をもたらします、

ここに画像の説明を入力

今、私は正方形の写真を取得していますが、出力に注意してください。まだその黄色の正方形の外側の写真を取得しています。私が欲しいのは、黄色い四角にある写真を取得することです。キャプチャされた画像のサイズは {w=2448, h=3264} のままです。画像の外側の部分を示す赤い円は、黄色の四角の内側にないため、出力に含めないでください。

これで何が問題なのですか?

4

1 に答える 1