gpt4 book ai didi

iphone - 尽快显示 CGImage 数据流

转载 作者:行者123 更新时间:2023-11-28 20:36:53 25 4
gpt4 key购买 nike

我正在通过网络连接接收一系列图像,并希望尽快显示它们,最高可达 30 FPS。我派生了一个 UIView 对象(因此我可以覆盖 drawRect)并公开了一个名为 cameraImage 的 UIImage 属性。帧数据以所需的速度到达,但实际绘制到屏幕上需要太多时间(由于 setNeedsDisplay 的滞后),这既会造成视频滞后,又会减慢与其他控件的交互。什么是更好的方法来做到这一点?我虽然使用过 OpenGL,但我看到的唯一例子不是将静态图像绘制到屏幕上,而是将纹理添加到一些旋转多边形。

- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();

CGRect screenBounds = [[UIScreen mainScreen] bounds];
[self.cameraImage drawInRect:screenBounds];

// Drawing code
//CGContextDrawImage(context, screenBounds, [self.cameraImage CGImage]); // Doesn't help
}

最佳答案

尝试将 CALayercontents 设置为图像。或者,如果您使用相对合理的参数设置它,设置 UIImageViewimage 应该不会慢很多。

OpenGL 绝对是一个替代方案,但使用起来要困难得多,而且它仍然会受到与其他相同的因素的限制:纹理上传速度。

(你这样做的方式(在drawRect:中绘制),你必须让UIKit为你分配一个位图,然后将图像绘制到位图中,然后将位图上传到视频硬件。如果可以,最好跳过中间人并直接上传图像。)

它也可能取决于 CGImage 来自哪里。它是由原始位图数据支持的(如果是,格式是什么?),还是 JPEG 或 PNG?如果需要对图片进行格式转换或解码,则需要更长的时间。

另外,CGImage 有多大?确保它不会比需要的大!

关于iphone - 尽快显示 CGImage 数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com