zoukankan      html  css  js  c++  java
  • xamarin UWP图片读取

        xamarin使用listview时经常会使用图片,而图片的图片源设置在uwp平台中是有平台特性的,这点请注意区分处理。也就是说在android和IOS上正常的处理在uwp下却是错误的方式。

        如同一张图片在不同的内容页同时出现的情况,即存在导航页面的时候,通常我们会用一个listview来显示人员列表,人员列表包含每个人的头像图片,如果我们点击listview同时使用Navigation.PushAsync()方法进入人员信息详细页面的时候,如果在详细页面你同时也有这张头像图片的情况。如果你只是简单的如下设置一个图片路径,那将会报The process cannot access the file “Image est.png” because it is being used by another proce

       Image Img=new() Image();    

       Img.Source= ImageSource.FromFile("Image est.png");

       由于uwp的平台特性,当我是设置图片的路径的时候,这个图片会被这个进程占用,同时阻止其他进程使用,当我们在另一个页面也同样使用这种图片时,有用上一个导航页面没有释放到这张图片,导致我们在新页面不能使用这种图片。这造成我们不能对资源操作。

      下面提供一种解决方案,在我们读取资源图片的时候,尽量不要使用进程独占并且不会主动释放的方式,我们可以使用FileStream方式读取资源。然后释放掉,方法如下

    public byte[] PhotoStream(string path)
    {
    byte[] byData;
    using (FileStream fs = new FileStream(path, FileMode.Open))
    {
    byData = new byte[fs.Length];
    fs.Read(byData, 0, byData.Length);
    fs.Dispose();
    }
    return byData;
    }

    在uwp平台下使用下列方式调用上面的方法即可。

    Image Img=new() Image(); 

    if (Device.OS == TargetPlatform.Windows)
    {
    byte[] bytes = Dependencies.FileUtil.PhotoStream(value.ToString());
    stream = new System.IO.MemoryStream(bytes);
    Img.Source= ImageSource.FromStream(GetStream);
    }

  • 相关阅读:
    【小程序】订阅消息
    【小程序】轮播图
    【小程序】全局变量的设置、使用、修改、全局方法执行
    【RN】标题栏右边添加自定义按钮或加事件
    【RN】阴影react-native-shadow
    【vue】点击复制到剪贴板的方法( clipboard )
    Q-learning和Sarsa的区别
    Q-learning之一维世界的简单寻宝
    使用tensorflow时,关于GPU的设置
    安装Matlab出现弹出DVD1插入DVD2的提示怎么办?
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/xamarin.html
Copyright © 2011-2022 走看看