我一直在寻找答案,有些人似乎可能是我需要的,但我不确定。我找到了这个Question #9152851和Question #2617625并且在一堆链接上发现了但是我需要一些方向。
基本上,我正在调度异步调用以使用OpenCV处理图像。您可以通过此处的代码看到我将其转换为NSData *,然后再将其发送给我的代表。
NSData *proccessedData = [NSData dataWithBytes:processedImage.data length:(processedImage.rows * processedImage.cols)];
[self.delegate onProcessedBitmapReady:proccessedData withFocusQuality:focusQuality];
但是当我回到我的委托时,我的processedBitmap是类型(OS_dispatch_data *)并包含一个字节值。因此,当我尝试设置UIImage时,它被设置为null。
- (void)onProcessedBitmapReady:(NSData *)processedBitmap withFocusQuality:(double)focusQuality
{
//Use comverted image from self.captureCommand onComplete
UIImage *image = [[UIImage alloc] initWithData:processedBitmap];
[self saveImage:image];
}
以下是值的屏幕截图:
那么,如何将这些字节(或其他任何字节)转换为可以填充到UIImage中的字节?
提前感谢您的帮助。
----------------------------------------------- -------- 添加新图片 ------------------------------- ----------
这张新图片有帮助吗?
谢谢。
答案 0 :(得分:10)
NSData
实际上是一个只提供接口的类集群,它有多种特殊的实现方式。似乎OS_dispatch_data
是围绕块传递数据对象的特殊实现,尤其是因为UIImage
创建不会崩溃(如果您将其传递给非NSData
对象,或只是垃圾内存)。相反,看起来UIImage
根本无法识别图像所在的格式!
顺便说一句,Apple有一个很好的关于类集群概念的指南,可以找到here。