iphone - 裁剪从 AVCaptureStillImageOutput 获取的图像

标签 iphone ios objective-c image ios7

我正在尝试裁剪从 AVCaptureStillImageOutput 获取的图像,但无法在正确的矩形处正确裁剪。

我的相机视频预览为 320x458 帧,裁剪矩形出现在该预览帧内,其坐标和大小为 CGRectMake(60, 20, 200, 420)。

拍照后,我收到来自

的图像
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
UIImage *finalImage = [self cropImage:image];

之后我尝试使用以下函数裁剪尺寸为 1080x1920 的实际图像。我得到了一个任性的剪裁,结果图像远远超出了实际的矩形! ;(

- (UIImage *)cropImage:(UIImage *)oldImage {
    CGRect rect = CGRectMake(60, 20, 200, 420);
    CGSize boundSize = CGSizeMake(320, 458);

    float widthFactor = rect.size.width * (oldImage.size.width/boundSize.width);
    float heightFactor = rect.size.height * (oldImage.size.height/boundSize.height);
    float factorX = rect.origin.x * (oldImage.size.width/boundSize.width);
    float factorY = rect.origin.y * (oldImage.size.height/boundSize.height);

    CGRect factoredRect = CGRectMake(factorX,factorY,widthFactor,heightFactor);
    UIImage *croppedImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([oldImage CGImage], factoredRect) scale:oldImage.scale orientation:oldImage.imageOrientation];
    return croppedImage;
}

在附图中,我尝试裁剪咖啡杯,但我得到的不是正确的裁剪图像!

Image to be cropped Cropped image - wrong

最佳答案

我认为您应该使用 PEPhotoCropEditor 示例代码进行裁剪。它易于使用。您可以从https://www.cocoacontrols.com/controls/pephotocropeditor 下载源代码

关于iphone - 裁剪从 AVCaptureStillImageOutput 获取的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854722/

相关文章:

ios - 由于图像加载问题,应用程序速度变慢

ios - 当我希望一个对象与 if 语句一起出现时,当我满足其要求时,它不起作用。 swift 、ARKit

ios - 在 Swift 3 中声明缓存

ios - 安装 Google-Mobile-Ads-SDK 时出错

ios - Keychain Access 和 Push Notification Entitlement 警告对 iTunes Connect 的 future 影响

android - 绘制固定长度曲线

ios - ARC 和非 ARC 框架之间的内存管理

ios - UINavigationBar 奇怪的标准高度

iphone - 监控 iPhone 应用程序中的内存使用情况?

iphone - 帮助!使用 rtmp-dump 对 iphone 的 rtmp 支持