我们的应用程序允许用户建立各种类型的资源库,例如 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/