如何将Color32 []图像从WebCamTexture转换为iOS中的UIImage?

时间:2013-06-24 19:42:10

标签: ios unity3d

有谁知道如何有效地做到这一点?我正在使用EncodeToPNG()函数,但性能非常慢。

我正在尝试使用WebCamTexture捕获Ipad相机图像并将其发送到Objective C端进行一些处理。我注意到可以发送纹理的原生地址但是我应该如何在ObjC端处理呢?有没有人对此有任何提示?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如您所说,EncodeToPNG的性能太慢,您需要做的是在将相机源从iOS(objc)发送到Unity的WebCamTexture之前挂钩代码。

我们使用类似的技术和一个名为CameraCaptureKit(https://www.assetstore.unity3d.com/en/#!/content/56673)的插件来冻结图像发送到Unity,同时等待Flash和防抖被打开。

在Unity生成的xcode项目中,您可以打开CameraCapture.mm并找到该功能。

- (void)captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection

然后,您可以通过修改此代码来修改发送到Unity的WebCamTexture的图像。 UnityDidCaptureVideoFrame是您要插入的代码。

intptr_t tex = (intptr_t)CMVideoSampling_SampleBuffer(&self->_cmVideoSampling, sampleBuffer, &self->_width, &self->_height);
UnityDidCaptureVideoFrame(tex, self->_userData);

干杯