Flutter SVG vs PNG performace manner [已关闭]

e1xvtsh3  于 2023-05-01  发布在  Flutter
关注(0)|答案(2)|浏览(133)

已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

3天前关闭。
Improve this question
有很多图像我必须显示在Flutter移动的应用程序。最好的选择是什么?显示图片时,请使用PNG或SVG。我可以知道当可比的差异接受我搜索了很多,但我没有得到相当数量的结果,以这种方式.
PS:我不使用网络图像或任何资产。

bq9c1y66

bq9c1y661#

当添加图像到我们的flutter应用程序时,我们通常使用。png、.jpeg、jpg或。svg images。每种格式都有自己的风格。但大多数设计师和开发人员更喜欢。png图像或。svg文件。除了它们的透明背景之外,这两种图像格式之间还有许多其他差异,如下所示。
1.**PNG(便携式网络图形)**PNG格式的图像是高分辨率、无损压缩和透明的。在大多数情况下,基于光栅的文件是采用的最佳选择。
1.**SVG(Scalable Vector Graphics,可缩放矢量图形)**此类文件是基于矢量的,也就是说它是基于数学算法渲染的。它们也可以在不损失质量的情况下按比例放大或缩小。此外,它还有助于搜索引擎优化(SEO)。
每种格式都有自己的优势。如果我们需要一个可以处理多种颜色的高分辨率图像。png将是最好的选择,而如果我们正在处理标志设计,或想玩周围的相同图像不同大小,而不被像素化那么。svg将是要考虑的格式。

gojuced7

gojuced72#

随着对这些的更多研究,我发现了以下几点:

  • 众所周知SVG文件较慢,因为库需要读取XML文件。实际的绘制过程很好,但由于需要解析XML文件,因此可能会导致延迟。解析结果被缓存,因此延迟通常只发生在渲染形状的第一帧中。
  • 如果标记很简单,那么应该编写CustomPainter代码来直接绘制形状,而不是从文件中阅读,这样会更快。然而,除非实现缓存系统,否则可能不存在对结果的缓存。
  • 另一方面,PNG文件使用以本机代码编写的编解码器,并利用Skia绘制RAW颜色信息,就像CustomPaint一样。PNG文件也可以缓存此信息,因此连续调用绘制同一文件不需要再次使用编解码器,Skia可以直接绘制图像。
  • CustomPaint可用于将PNG文件绘制到画布上。最终,一切都使用Skia来渲染到屏幕,Skia是硬件加速的,所以任何时间损失通常都发生在到达Skia之前,例如从存储或网络阅读图像或通过Dart与Skia通信。
  • 与编程中的所有事情一样,最好在有疑问时进行测试。除非屏幕上有数百或数千个标记,否则SVG和PNG文件之间的性能差异不大。

对于以这种方式看的人来说,我认为这将在某种程度上是有用的。

相关问题