【问题标题】:Reading asset image dimensions without loading into memory读取资产图像尺寸而不加载到内存中
【发布时间】:2019-09-26 15:53:49
【问题描述】:

我试图找出资产文件的尺寸(宽度和高度),但没有将其加载到内存中,或者尽可能少地使用内存。

我目前正在做:

Image _mainMenuTable = Image.asset("images/main_menu_table.png");

但这不会将小部件放入内存并将图像加载到其中吗?即使我没有在任何地方显示它。

我还尝试创建一个AssetImage,我已经将其设置为Container 的背景图像,但我无法从中检索图像的尺寸。

如果有更好的方法Image.asset 有什么想法吗?这样,我确实动态地获取了我的宽度和高度,但是它将它加载到内存中两次,不是吗?一次是Image,一次是AssetImage

免责声明:这是我进入 Flutter 的第二周,所以如果答案很明显,请保持温和。

干杯!

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您只需要使用 dart:io 包中的 File 类。 示例 -

    import 'dart:io';
    
    void main(){
      var file = File('file_path');
      file.length().then((len) => print(len)); //prints bytes
    }
    

    【讨论】:

    • 嗯...我需要图像的宽度和高度,而不是尺寸。虽然这在某些时候可能会派上用场。
    • 要获得高度和宽度,我们可以使用 decodeImageFromList() 方法,但它需要一个字节列表作为参数,为此我们必须读取图像。不过肯定有别的办法。如果我们能以某种方式访问​​图像的元数据,那么它可能会有所帮助。
    • 是的,没错。它将为内存管理创造奇迹。还在等人回答,可能有什么东西在那里......
    猜你喜欢
    • 2015-01-27
    • 2015-07-09
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多