抛出 ImageCodecException 解析图像编解码器

Posted

技术标签:

【中文标题】抛出 ImageCodecException 解析图像编解码器【英文标题】:ImageCodecException was thrown resolving an image codec 【发布时间】:2021-06-07 20:42:34 【问题描述】:

我正在使用 1.27.0-4.0.pre sdk 版本到我的颤振 pwa。在升级之前我使用了1.24.0-10.2.pre sdk 版本。在 1.24.0-10.2.pre 版本中一切都很好,我没有任何问题显示带有Image.network 的 svg 图像。但是现在当我启动我的 pwa 时,我的图像都没有显示?

这个 read squarer 出现而不是 image 。我在控制台上收到此错误:

══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
The following ImageCodecException was thrown resolving an image codec:
Failed to decode image data.
Image source: http://localhost:33033/assets/svgs/splash.svg

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
lib/_engine/engine/canvaskit/image.dart 102:7                                     createDefault
lib/_engine/engine/canvaskit/skia_object_cache.dart 141:41                        new
lib/_engine/engine/canvaskit/image.dart 92:3                                      decodeFromBytes
lib/_engine/engine/canvaskit/image.dart 75:53                                     <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37283:58                              <fn>
dart-sdk/lib/async/zone.dart 1370:13                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1265:19                                              runUnary
dart-sdk/lib/async/zone.dart 1170:7                                               runUnaryGuarded
dart-sdk/lib/async/zone.dart 1207:26                                              <fn>

Image provider: NetworkImage("assets/svgs/splash.svg", scale: 1)
Image key: NetworkImage("assets/svgs/splash.svg", scale: 1)

当我在 chrome 上打开 http://localhost:33033/assets/svgs/splash.svg 时,此图像存在并已加载。有什么问题?

【问题讨论】:

flutter 不支持 SVG。 1.24.0-10.2.pre 版本中它的工作,我没有任何问题@ChristopherMoore 看我的回答.. 【参考方案1】:

默认情况下,Flutter 不支持 SVG。如果它在过去有效,您可能会使用 HTML Web 渲染器,您可以在其中稍微使用 SVG,但它不是这样做的,因此存在问题。

我看到您现在正在使用 CanvasKit 渲染器,它可能会以不同于 HTML 渲染器的方式处理图像,并消除了使用 SVG 的任何可能性。

您可以使用flutter_svg 包并使用 CanvasKit 渲染器,以尽可能可靠地使用 SVG。

【讨论】:

我删除 Image.network 并使用 flutter_svg 并显示 svg。但是其他浏览器可以这样显示svg吗? @ChristopherMoore @CyrustheGreat 你能改一下这个问题吗?不是很清楚。你是在问是否所有浏览器都支持这个? 是@ChristopherMoore @CyrustheGreat 我不能说全部,但我猜大多数主要的桌面和移动浏览器。如果支持 Flutter Web,则假设您仅使用 CanvasKit 渲染器,则可能支持此 SVG。

以上是关于抛出 ImageCodecException 解析图像编解码器的主要内容,如果未能解决你的问题,请参考以下文章

解析图像抛出 AFNetworking

解析 RSS 提要最近一直抛出文档类型定义 (DTD) 错误

LocalDate 解析抛出异常‽

SAX XML 解析器抛出空指针异常

我的 Datanova 数据统一器模型映射抛出“规则解析错误。跨度预期 '(' at )”

BasicDBObject 解析抛出无效的 json 编号