iOS图像裁剪和调整大小

时间:2015-05-16 17:22:29

标签: ios objective-c image camera

我正在使用该库 linked here使用以下代码调整摄像头捕获的图像大小:

    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相机胶卷访问的图像。 p>

情况:当倒车摄像头以横向方向拍摄保存在相机胶卷中的图像时。实际上,图像获得了一个exif方向,表明它是以纵向模式捕获的...但它仍然是宽屏图像。

代码不成比例地裁剪图像,在边缘留下黑色的空白条。我无法弄清楚问题是什么。有人能指出我正确的方向吗?

0 个答案:

没有答案