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

时间:2015-01-05 21:41:51

标签: c# windows-runtime windows-phone-8.1 windows-8.1

我正在尝试下载图像,将其保存到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.Logo是一个带有jpeg图像网址的字符串。

每次我最终都会看到一块透明的瓷砖。

1 个答案:

答案 0 :(得分:1)

代码运行后,您应该能够看到图像是否在\ AppData \ Microsoft \ Packages \\ Local文件夹中。如果没有,那么下载它就会出现问题。如果它在那里,请确保它们的尺寸均为200KB或更小,1024px或更小。这些是平铺图像的限制,如果超出,将导致图像不出现。在这种情况下,您需要重新取样图像。

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