Web 图像作为本地存储中的磁贴

本文关键字:存储 图像 Web | 更新日期: 2023-09-27 18:36:24

我目前正在尝试下载图像,将其保存到 LocalStorage 容器中的文件夹中,然后将其用作磁贴。但是,每次我尝试这样做时,磁贴都是空白的。所有内容都是应用程序的名称和标题。

我无法测试是否发生这种情况,因为图像未正确保存或 URI 不正确。

var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var channelFolder = await localFolder.CreateFolderAsync(_currentChannel.Name, CreationCollisionOption.OpenIfExists);
var thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(_currentChannel.Logo));
var remoteFile = await StorageFile.CreateStreamedFileFromUriAsync("profilePicture.jpeg", new Uri(_currentChannel.Logo), thumbnail);
await remoteFile.CopyAsync(channelFolder, "profilePicture.jpeg", NameCollisionOption.ReplaceExisting);
string tileXmlString = "<tile>"
+ "<visual>"
+ "<binding template='TileSquareText04'>"
+ "<image id='1' src='ms-appdata:///local/" +_currentChannel.Name + "/profilePicture.jpeg'>" + "</image>"
+ "<text id='1'>" + "Latest Image" + "</text>"
+ "</binding>"
+ "</visual>"
+ "</tile>";
Windows.Data.Xml.Dom.XmlDocument tileDOM = new Windows.Data.Xml.Dom.XmlDocument();
tileDOM.LoadXml(tileXmlString);
TileNotification tile = new TileNotification(tileDOM);
TileUpdateManager.CreateTileUpdaterForApplication().Update(tile);

_currentChannel.徽标是一个字符串,其中包含指向 jpeg 图像的 url。

我每次都会得到一个透明的瓷砖。

Web 图像作为本地存储中的磁贴

代码运行后,您应该能够查看图像是否位于''AppData''Microsoft''Packages''''Local文件夹中。如果没有,则下载它时出现问题。如果存在,请确保两个维度的 200KB 或更小,1024 像素或更小。这些是磁贴图像的限制,如果超过这些限制,将导致图像不显示。在这种情况下,您需要对图像重新采样。

还应使用已知的小图像单独测试磁贴更新代码,例如,使用 ms-appx URI 或具有 http URI 的远程图像的包中的某些内容。如果这些也不起作用,那么您的更新代码是可疑的。检查代码的该部分是否存在任何错误或异常。