转换类的目标C代码" GPUImageRawDataOutput"到斯威夫特

时间:2016-06-05 20:30:16

标签: objective-c swift gpuimage

我有这个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

}];

1 个答案:

答案 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))

        })