我有这个Obj-C代码:
需要将它转换为Swift代码。
(到目前为止,我确实设法将C代码重写为Swift,但是,这是某种回调,遗憾的是,我没有找到任何方法来成功转换它)
GPUImageRawDataOutput *rawDataOutput = [[GPUImageRawDataOutput alloc] initWithImageSize:CGSizeMake(640.0, 480.0) resultsInBGRAFormat:YES];
_rawDataOutput = rawDataOutput; // __unsafe_unretained instance variable
[rawDataOutput setNewFrameAvailableBlock:^{
GLubyte *outputBytes = [_rawDataOutput rawBytesForImage];
NSInteger bytesPerRow = [_rawDataOutput bytesPerRowInOutput];
NSLog(@"Bytes per row: %d", bytesPerRow);
NSData *dataForRawBytes = [NSData dataWithBytes:outputBytes length:/* I can't figure out how to get the length of the GLubyte pointer */];
[_targetUIImageView setImage:[UIImage imageWithData:dataForRawBytes]]; // An instance UIImageView
}];
答案 0 :(得分:1)
手机编码失明。在编译器的帮助下尝试一下
let rawDataOutput = GPUImageRawDataOutput(CGSizeMake(640.0, 480.0),resultsInBGRAFormat:true)
self.rawDataOutput = rawDataOutput
rawDataOutput.setNewFrameAvailableBlock({(frame) IN
let outputBytes = self.rawDataOutput.rawBytesForImage
let bytesPerRow = self.rawDataOutput.bytesPerRowInOutput
print("Bytes per row \(bytesPerRow)")
let dataForRawBytes = NSData(bytes:outputBytes ,length:outputBytes.count)
self.targetUIImageView.setImage(UIImage(imageWithData:dataForRawBytes))
})