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);
    }

  • 相关阅读:
    [ZOJ 4062][2018ICPC青岛站][Plants vs. Zombies]
    [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
    [codeforces Mail.Ru Cup 2018 Round 1 D][ xor 操作]
    [codeforces round#475 div2 ][C Alternating Sum ]
    [zoj4045][思维+dfs]
    [zoj4046][树状数组求逆序(强化版)]
    费马大定理以及求解a^2+b^2=c^2的奇偶数列法则
    【HDOJ3567】【预处理bfs+映射+康拓展开hash】
    POJ1279 Art Gallery 多边形的核
    第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/xamarin.html
Copyright © 2011-2022 走看看