微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 UWP 在 Xamarin 中加载和显示图像

如何解决使用 UWP 在 Xamarin 中加载和显示图像

我正在编写一个 Xamarin 图片库应用程序,我的 UWP 应用程序具有广泛的文件权限,可以从随机文件路径加载字节,但我无法显示这些字节

image.source = ImageSource.FromStream(() => new MemoryStream(imageBytes)); 

代码在基础项目中,其中字节是通过 UWP 项目中的依赖服务从图像文件中加载的。 .xaml 文件包含以下图像定义:

<Image x:Name="image" Aspect="Fill"/>

执行此代码后(imageBytes 不为空),界面上不显示图像。

但是如果我使用

image.source = ImageSource.Fromresource("test.png");

显示来自资源的图像。所以我假设如果正确加载图像应该是可见的。 我没有在 Android 或 iPhone 上测试代码,因为我主要想在 Windows 上使用它,也许以后在 Android 上使用它。 可以请任何人告诉我我做错了什么或张贴一个工作示例代码链接

亲切的问候, 沃尔夫冈

解决方法

我正在编写一个 Xamarin 图片库应用程序,我的 UWP 应用程序具有广泛的文件权限,可以从随机文件路径加载字节,但我无法显示这些字节

导致此问题的原因有很多,如果您像下面这样从 installedLocation 文件夹加载文件,您需要确保文件 Build ActionContent 类型。

在测试过程中,它可以正确加载图像字节并很好地显示图像。请尝试以下 DependencyService。

界面

public interface IImageStream
{
    Task<byte[]> GetBytes();
}

实施

[assembly: Dependency(typeof(MyImageStream))]

public class MyImageStream :IImageStream
{

    public async Task<byte []> GetBytes()
    {
        Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
        StorageFile sampleFile = await installedLocation.GetFileAsync("test.png");

        byte[] result;
        using (Stream stream = await sampleFile.OpenStreamForReadAsync())
        {
            using (var memoryStream = new MemoryStream())
            {

                stream.CopyTo(memoryStream);
                result = memoryStream.ToArray();
            }
        }
        return result;
    }

}

使用

var imageBytes = await DependencyService.Get<IImageStream>().GetBytes();
image.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。