是否有任何直接的方式,我可以显示图像,每帧像素数据直接控制在程序中的逻辑?作为一个类推,在Java中,我们有一个BufferedImage
,它的像素数据可以由程序员直接操作,并且可以在显示的每一个帧中更新。或者在SDL中,我们可以制作一个表面,其像素数据是一个可读写的内存区域,以达到类似的效果。颤振中有类似的东西吗?到目前为止,我能找到的最好的方法是将BMP图像作为Uint8List
并将其传递给Image.memory
,但是这个函数似乎需要相当长的时间(10-20 ms?)在屏幕上显示原始数据之前,从原始数据构建一个非常小的可视图像。在此之前,它只是一个空白,这将导致任何实际应用程序闪烁。我还担心它对于小图像的速度有多慢,这可能会呈现像双缓冲这样的技术,这种技术可以解决闪烁问题,但对较大的图像仍然没有帮助。有什么类似于修改Image
对象的底层图像数据的方法吗?这样我就可以更改原始像素数据,而不需要构造一个全新的Image
。
发布于 2022-08-17 05:53:11
(注-我会把这个作为评论,但我没有足够的声誉点,对不起)
您还可以使用dart:ui函数decodeImageFromPixels,它以Uint8List作为输入,但对于全屏,这也是缓慢的(在iPad 1366到1024,第4代iPad上),大约需要25 25mSec。我希望使用隔离,然后将屏幕分解为4,这一次增加到一些有用的东西。decodeImageFromPixels不允许我这样做是因为一个未知的原因,所以我一直在考虑创建一个BMP (如您所建议的),但是从您关于Image.memory慢的评论来看,这也不是一种选择。
https://stackoverflow.com/questions/73125714
复制相似问题