1

我正在使用 captureStillImageAsynchronouslyFromConnection: 从相机获取图像样本缓冲区。之后,我通过 OpenGL (GPU) 运行图像以应用过滤器,但不幸的是,Apple 有人在 iPhone 4 上安装了相机,其输出大于最大纹理尺寸。

Brad Larsons 解释:iPhone 4 是一个特例,因为它可以拍摄足够大的照片 (2592x1936),它们刚好超过这些设备上 GPU 的最大纹理尺寸 (2048x2048)。这导致当前处理失败。所有其他设备要么不拍摄那么大的照片,要么支持更大的纹理尺寸(iPad 2、iPad 3 和 iPhone 4S 支持这些更大的尺寸)。

所以我拥有的代码是缩小图像但我必须在 iPhone 4 上调整大小后创建 CMSampleBufferRef 只是为了欺骗捕获过程......有人知道如何从 CIImage 获取 CMSampleBufferRef 吗?

Objective-C CIImage *ciImage = [CIImage imageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(sampleBuffer) options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNull null], kCIImageColorSpace, nil]]; ciImage = [[ciImage imageByApplyingTransform:myScaleTransform] imageByCroppingToRect:myRect];

4

0 回答 0