android - 如何在 Android 设备上的 Flutter 应用程序中显示 TIFF 图像?

标签 android image flutter tiff

我们的应用程序允许用户建立各种类型的资源库,例如 PDF、电子表格等。我们存储在 S3 上的几乎任何 MIME 类型的文档。

当用户单击查看任何这些资源时,我们基本上确定我们使用的是 iOS 设备还是 Android。在 iOS 上,我们使用 url_launcher 来基本上显示任何内容。

Android 有点复杂,但如果 mime 类型是图像,我们也可以使用 url_launcher。如果没有,我们将文件下载到本地文件并调用 OpenFile 包来显示结果(如果可以的话)。

这通常工作得很好,除了 TIFF 图像类型,它不会在浏览器中本地显示......

有没有一种简单的方法可以在Android平台上以全 flutter 屏幕显示TIFF图像(类似于在浏览器中显示)?实际上,对于图像/mime 类型,有没有比一般的 url_launcher 更简单的方法来显示它们?

关于 Android 上 TIFF 的另一个堆栈溢出问题没有解决这个问题,因为这是针对原生 Android 应用程序的,而这是针对 Flutter 的,并且该解决方案不适合(我很容易看到)Flutter 应用程序。

最佳答案

这个问题很老了,但我仍然想回答它:)

您可以使用图像库来解码图像(无论它是什么),然后将其编码为 png,然后将其传递给图像小部件。

为什么是PNG??? =>在widgets/images.dart中它说

 /// This only accepts compressed image formats (e.g. PNG). Uncompressed
  /// formats like rawRgba (the default format of [dart:ui.Image.toByteData])
  /// will lead to exceptions.

待办事项: 我必须将图像库导入为 imgLib,否则它会与 Flutter 中的图像小部件发生冲突...

import 'package:image/image.dart' as imgLib;
....
imgLib.Decoder dec = imgLib.findDecoderForData(response.data);
Image.memory(imgLib.encodePng(dec.decodeImage(response.data)))

然后您就有了一个用于在 UI 上显示它的图像小部件

关于android - 如何在 Android 设备上的 Flutter 应用程序中显示 TIFF 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54030936/

相关文章:

android - 可以在华为应用市场上推荐 Flutter 应用吗?

android - 当我指定横向时,如何防止 Android Activity 短暂进入纵向模式?

java - 我无法将 View 添加到我的 viewflipper

WPF - 将复选框复选标记更改为图像(或隐藏)

flutter - 使用moor_flutter包获取sqlite db表中具有相同列值的所有记录

flutter - 在 Flutter 和 Dart 中重构小部件的最优雅/最有效的方法

android - 应用品牌

android - 将edittext限制为单行

java - 如何在 Thymeleaf 中显示 BufferedImage

html - 双三次插值图像重采样