- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是第一次使用 AVCaptureStillImageOutput,我在某个时候保存了一张 JPEG 图像。我想保存 PNG 图像而不是 JPEG 图像。我需要为此做什么?
我在应用程序中有这 3 行代码:
let stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)
是否有一种简单的方法来修改这些行以获得我想要的内容?上网查了一下好像答案是NO(除非我不够幸运),不过我还是相信一定有好的解决办法。
最佳答案
AVFoundation Programming Guide 中有示例代码展示了如何将 CMSampleBuffer 转换为 UIImage(在 Converting CMSampleBuffer to a UIImage Object 下)。从那里,您可以使用 UIImagePNGRepresentation(image)
将其编码为 PNG 数据。
这是该代码的 Swift 翻译:
extension UIImage
{
// Translated from <https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/06_MediaRepresentations.html#//apple_ref/doc/uid/TP40010188-CH2-SW4>
convenience init?(fromSampleBuffer sampleBuffer: CMSampleBuffer)
{
guard let imageBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil }
if CVPixelBufferLockBaseAddress(imageBuffer, kCVPixelBufferLock_ReadOnly) != kCVReturnSuccess { return nil }
defer { CVPixelBufferUnlockBaseAddress(imageBuffer, kCVPixelBufferLock_ReadOnly) }
let context = CGBitmapContextCreate(
CVPixelBufferGetBaseAddress(imageBuffer),
CVPixelBufferGetWidth(imageBuffer),
CVPixelBufferGetHeight(imageBuffer),
8,
CVPixelBufferGetBytesPerRow(imageBuffer),
CGColorSpaceCreateDeviceRGB(),
CGBitmapInfo.ByteOrder32Little.rawValue | CGImageAlphaInfo.PremultipliedFirst.rawValue)
guard let quartzImage = CGBitmapContextCreateImage(context) else { return nil }
self.init(CGImage: quartzImage)
}
}
关于ios - AVCaptureStillImageOutput.pngStillImageNSDataRepresentation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605236/
我在 iPhone SDK 中的新 AVFoundation 类中遇到了奇怪的行为。 我有一个用于拍照的 AVCaptureStillImageOutput,并且我正在根据自己的喜好设置其输出设置。代
我是第一次使用 AVCaptureStillImageOutput,我在某个时候保存了一张 JPEG 图像。我想保存 PNG 图像而不是 JPEG 图像。我需要为此做什么? 我在应用程序中有这 3 行
我正在使用 captureStillImageAsynchronouslyFromConnection 从相机捕捉图像 图像正在倒置保存。我尝试使用 保存图像 UIImage *flippedImag
我在做一些我认为不应该那么困难的事情上遇到了困难,所以我想我一定是从错误的角度看待问题。为了了解 AVCaptureStillImageOutput 和相机的工作原理,我制作了一个小应用程序。 这个应
我正在使用 AVCaptureStillImageOutput 捕获图像。一切都做得很好。但我尝试导航到新的 View Controller ,快门声很困难。有什么解决方法可以避免这种情况吗? 最佳答
我正在尝试裁剪从 AVCaptureStillImageOutput 获取的图像,但无法在正确的矩形处正确裁剪。 我的相机视频预览为 320x458 帧,裁剪矩形出现在该预览帧内,其坐标和大小为 CG
如何设置完成处理程序: captureStillImageAsynchronouslyFromConnection:completionHandler: 用于 AVCaptureStillImageO
我正在使用 AVCaptureConnection和 AVCaptureStillImageOutput创建覆盖屏幕并捕获图像的类。在 View 中,我有一个自定义选项卡栏,其中包含一些自定义控件,如
这是我迄今为止尝试的相机配置: AVCaptureSession *session = [[AVCaptureSession alloc] init]; [session setSes
我正在做一个项目,我想遮盖用户刚刚用他们的相机拍摄的照片。 mask 以特定的纵横比创建,以将信箱添加到照片。 我可以成功创建图像、创建蒙版并将两者都保存到相机胶卷,但我无法将蒙版应用于图像。这是我现
我目前正在编写一段代码,如下所示: if error == nil && (captureSession?.canAddInput(input))! { captureSession?.add
所以我使用了一些在 Objective C 中执行此操作的代码,并且我一直在将其转换为 swift,并且我正在努力从 AVCaptureStillImageOutput 创建一个 CIImage。因此
我正在尝试从 AVCaptureStillImageOutput 捕获像素数据,并注意到在将图像裁剪为 CGImage 后,它会重新定向。为了对此进行测试,我将临时图像输出到照片库。现在我注意到,即使
我正在使用 AVFoundation 捕捉图像。我正在使用 AVCaptureVideoPreviewLayer 在屏幕上显示摄像头画面。此预览层的框架获取具有动态尺寸的 UIView 的边界: AV
我尝试构建一个从 iPhone 相机捕获帧并对这些帧进行一些处理的应用程序。我尝试了一些在互联网上找到的代码,例如这里:How to capture image without displaying
我正在尝试使用 AVFoundation 制作照片。当我将 obj-c 代码翻译成 swift 来执行此操作时,我的程序在运行我尝试查找视频连接的部分时卡住了。有什么线索吗? let captureS
使用jpegStillImageNSDataRepresentation:方法可以从AVCapureStillImageOutput获取NSData,然后我可以将数据写入文件。 NSData * im
我使用 AVFoundation 在 UIView 中捕获图像并向其添加注释。现在,我需要获取拍摄图像的地理位置。我当前的代码片段如下所示。元数据没有地理位置。也许我将不得不使用 CLLocation
我想捕获Mac的屏幕,并且我知道AVCaptureStillImageOutput可以工作。但我不知道如何在Mac中使用它。 我希望有人能给我一些有关使用该类捕获屏幕的示例代码。或者一些建议也可以。
我正在尝试使用我正在使用的应用程序发送照片,我已经让该应用程序拍照,然后当您点击发送时,它会发送您刚刚拍摄的照片以通过邮件发送。 但我不知道如何将 AVCaptureStillImageOutput
我是一名优秀的程序员,十分优秀!