在IsolatedStorage的html页面中使用它时,有一些奇怪的东西与“图像路径”有关。
我想创建一个html页面,它将由app的webBrowser对象使用。所以我在IsolatedStorage中创建一个html页面,然后将此页面与webBroswser.Navigate一起使用。
除了图像外,一切正常。
1)如果我在IsolatedStorage的根目录下创建一个html页面和图像,一切正常,代码<img src="image.png">
可以工作,我可以在页面上看到图像。
2)然而,在我看来,在root用户保存页面和图像的方式并不是一个好主意,因为我已经拥有了许多目录,应用程序在那里使用,因此,我创建了一个新目录“Html”并保存那里的所有页面。
现在,当我打开此页面时,我无法看到我的图像。我已经尝试了几种src链接,仍然无法找到答案。
<img src=...">
标记中的正确链接是什么,如果层次结构为:
IsolatedStorage - &GT; HTML(文件夹) - &GT; index.html的(文件)
(1)IsolatedStorage - &gt; Html(文件夹) - &gt; image.png(文件)
(2)IsolatedStorage - &gt; Html(文件夹) - &gt;图像(文件夹) - &gt; image.png(文件)
实际上,我认为对于(1)来说它会像<img src="image.png">
那样,但我尝试了几个相似的版本而且没有一个能够工作。
答案 0 :(得分:0)
嗯,这看起来有点奇怪:
此方法会将图片保存到IsolatedStorage,但不允许在html img标记中使用它:
using (IsolatedStorageFile isopicsFile = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isopicsFile.FileExists(Constants.HtmlFolderName + "launch.png") == false)
{
Stream yourFilepath = Application.GetResourceStream(new Uri("/someUri/launch.png", UriKind.Relative)).Stream;
BitmapImage b = new BitmapImage();
b.SetSource(yourFilepath);
WriteableBitmap wb = new WriteableBitmap(b);
using (var isoFileStream = isopicsFile.CreateFile(Constants.HtmlFolderName + "launch.png"))
{
var width = wb.PixelWidth;
var height = wb.PixelHeight;
// Theoretically, there may be the problem, as the file extention is png, not jpg
System.Windows.Media.Imaging.Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100);
}
}
}
这个将保存图片并允许将其与html标签一起使用:
string f = "somePath/launch.png";
StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative));
using (BinaryReader br = new BinaryReader(sr.Stream))
{
byte[] data = br.ReadBytes((int)sr.Stream.Length);
string fileName = "launch.png";
string filePath = Constants.HtmlFolderName + fileName;
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists(filePath))
{
isoStore.DeleteFile(filePath);
}
using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(filePath)))
{
bw.Write(data);
bw.Close();
}
}
}
此外,在第二种情况下,图片属性必须设置为Content + Always Copy。