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

2024-01-14

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

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

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

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

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

关于 Android 上 TIFF 的另一个 Stack Overflow 问题没有解决这个问题,因为这是针对原生 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 上显示它的 Image Widget

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 设备上的 Flutter 应用程序中显示 TIFF 图像? 的相关文章

  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来

随机推荐

  • Django 验证错误

    根据https docs djangoproject com en dev ref forms validation https docs djangoproject com en dev ref forms validation Good
  • Ruby 解释器 (CUI) 1.9.2p180 [i386-mingw32] 已停止工作(我没有使用 MySQL)

    我的 ruby 解释器在几乎每个页面请求上都会崩溃 并出现以下错误 Ruby 解释器 CUI 1 9 2p180 i386 mingw32 已停止工作 我没有使用 MySQL 也没有安装 gem 因为许多在线帖子都建议这是一个潜在原因 我可
  • *nix 伪终端如何工作?什么是主/从通道?

    我想在 Linux 系统上用 C 语言编写一个简单 愚蠢的 X 终端模拟器 起初 我只是想我必须打开一个 shell 并显示其输出 我检查了xterm和rxvt代码 看起来有点复杂 首先 我必须使用 openpty 打开一个伪终端 所以我查
  • 将 1 到 32 位数字附加到字符缓冲区

    我有一个char 缓冲区 我想附加各种位大小的整数 在1 and 32 to 因此 我需要一个函数 void addBits char buffer int bits appended so far int object int objec
  • 追加 DOM 元素两次 (jQuery)

    有人可以解释为什么以下代码片段没有添加
  • 并发写入同一缓存行中的不同位置

    假设我有一个 C 11 应用程序 其中两个线程写入不同但邻近内存位置 使用指向原始类型的简单指针 我能否确定这两个写入最终都会进入内存 可能在两者都达到boost barrier http www boost org doc libs 1
  • Rabbitmq 使用 .NET 使用单个同步调用检索多条消息

    有没有办法使用 NET 使用单个同步调用来接收多条消息 我见过question https stackoverflow com questions 17005515 rabbitmq retrieve multiple messages u
  • 如何对 Rails 中 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

    我在 Rails 应用程序中使用 Prawn 和 Prawnto 插件生成 PDF 文件 我创建一个带有标准文本区域的标准表单 并将其作为 PDF 文件的正文提交 但是 我需要能够使用以下方式格式化单词和句子 bold 强调 也许不同的字体
  • 受影响的行实体框架

    如何获取 SaveChanges 后受影响的行数 The 保存更改 http msdn microsoft com en us library bb336792 aspx方法返回所有已更改项目的 int MSDN 片段 返回值 类型 Sys
  • 在javascript中选择区域/矩形

    我需要通过鼠标在 HTML5 页面中选择一个区域 然后我将与该区域内的元素进行交互 一定有一种简单的方法可以做到这一点 但我找不到现成的任何东西 不幸的是 jquery UI 选择不起作用 因为它似乎只支持一个父元素 有没有现成的东西可以在
  • 如何以编程方式突出显示 UIButton?

    很多用户抱怨 iPhone 上的小 i 信息按钮很难触摸 好吧 很简单 我只是在它后面贴了一个又大又大的隐形按钮 即使你用最粗心的手指触摸也不会错过它 当你触摸它时 它就会执行 infoButtonAction 事实是 我想让信息按钮本身闪
  • 递归算法的空间复杂度

    我在一次面试中被问到 解决问题的有效方法是检查回文 现在我可以做两件事 从 i 0 开始到 i n 2 并比较第 i 个和第 n 个字符是否相等 我可以使用递归来检查第一个和最后一个是否相同 并且字符串的其余部分是否为回文 第二个是递归的
  • 垃圾收集机制如何工作? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用外行术语来说 垃圾收集机制是如何工作的 如何识别对象可用于垃圾回收 还有 做什么Reference Counting Mark an
  • 如何判断 Map 是否有默认值?

    有没有办法检查是否Map有定义的默认值吗 我想要的是相当于myMap getOrElse x y 如果关键在哪里x不在地图上 if myMap有默认值 返回该值 否则返回y 该问题的一个人为示例 scala gt def f m Map S
  • 如何在 MFC 应用程序中托管 WPF 表单

    我正在寻找有关在现有 MFC 应用程序中托管 WPF 表单的任何资源 谁能指出我如何做到这一点的正确方向 据我了解 我自己没有尝试过 这几乎就像将 WPF 控制权交给父级句柄一样简单 这是一个演练 在 Win32 中托管 WPF 内容 ht
  • 如何从.net core实体框架调用带有表值参数的存储过程

    我有一个带有表值参数的存储过程 我必须从 net core 中的实体框架调用它 我在上下文对象上找不到任何 API 我尝试过使用 ADO net API 它有效 但现在我必须从 net core 中的 EF 调用它 我必须调用的存储过程返回
  • PHP 多维数组访问

    假设我在 PHP 中有一个多维数组 例如 this array array string name gt string string array gt array string key gt string val 如何访问字符串数组键值对
  • XML 解析错误:文档末尾有多余内容

    我的 xml 文件中出现此错误 XML Parsing error Extra content at the end of the document 我正在使用 Notepad 它在标题标签中显示第二个红色单词
  • Linq 中的 Union 与 Concat

    我有一个问题Union and Concat var a1 new 1 2 Union new 1 2 O P 1 2 var a2 new 1 2 Concat new 1 2 O P 1 2 1 2 var a3 new 1 2 Uni
  • 如何在 Android 设备上的 Flutter 应用程序中显示 TIFF 图像?

    我们的应用程序允许用户建立各种类型的资源库 例如 PDF 电子表格等 我们存储在 S3 上的几乎任何 MIME 类型的文档 当用户点击查看任何这些资源时 我们基本上可以确定我们使用的是 iOS 设备还是 Android 设备 在 iOS 上