我正在使用此处链接的库,使用以下代码调整相机拍摄的图像的大小:

    UIImage *image = [[UIImage alloc] initWithData:imageData];

    CGFloat squareLength = SC_APP_SIZE.width;
    CGFloat headHeight = _previewLayer.bounds.size.height - squareLength;//_previewLayer的frame是(0, 44, 320, 320 + 44)
    CGSize size = CGSizeMake(squareLength * 2, squareLength * 2);

    UIImage *scaledImage = [image resizedImageWithContentMode:UIViewContentModeScaleAspectFill bounds:size interpolationQuality:kCGInterpolationHigh];

    CGRect cropFrame = CGRectMake((scaledImage.size.width - size.width) / 2, (scaledImage.size.height - size.height) / 2 + headHeight, size.width, size.height);

    UIImage *croppedImage = [scaledImage croppedImage:cropFrame];

    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if (orientation != UIDeviceOrientationPortrait) {
        CGFloat degree = 0;
        if (orientation == UIDeviceOrientationPortraitUpsideDown) {
            degree = 180;// M_PI;
        } else if (orientation == UIDeviceOrientationLandscapeLeft) {
            degree = -90;// -M_PI_2;
        } else if (orientation == UIDeviceOrientationLandscapeRight) {
            degree = 90;// M_PI_2;
        }
        croppedImage = [croppedImage rotatedByDegrees:degree];
    }

当通过相机捕获图像时,无论后置摄像头还是前置摄像头,该代码均有效。

当我使用相同的代码(除了获取图像的Exif方向,而不是设备方向),为原先摄像机捕捉的,而是通过的iOS相机胶卷访问一个形象问题发生。

案例:当BACK相机以横向方式捕获相机胶卷中保存的图像时。 实际上,图像具有exif方向,表明它是在纵向模式下捕获的...但是它仍然是宽屏图像。

代码不成比例地裁剪图像,在边缘留下黑色的空白区域。 我不知道是什么问题。 有人可以指出我正确的方向吗?

  ask by Richard Tiutiun translate from so

本文未有回复,本站智能推荐: