0

我有一个网络目录,其中包含我们公司所有员工照片的转储。这些图像被命名为FirstnameLastinitial.jpg. 我最终试图在 Silverlight 中构建这些图片的照片浏览器,但我想我将从如何从该位置获取图片开始。

我想我应该根据该文件夹中的图片生成一个 XML 文件,或者我应该使用数据库。然后我可以使用Blend 中的 Wall3D 控件来显示它们。那只是显示它们的一种可能方式。

如果我创建一个 XML 的外壳,如下所示,我是否还可以允许我的应用在生成后修改 XML?

  <Photo>
<URL>Images/img10.jpg</URL>
<ImageName>Test 2</ImageName>
<ImageDescription>This is a picture of someone</ImageDescription>
 </Photo>

我想到了另一个想法。Silverlight 是否甚至能够从某个位置读取图像,还是必须将它们包含在 XAP 中?如果我使用 RIA 服务以某种方式将图像提供给我的 Silverlight 应用程序会怎样?

有没有人尝试过类似的事情?我知道我想做什么,但我承认这对我来说是一个全新的领域,因此我将不胜感激任何指示、指导、洞察力,或者如果没有其他链接可以帮助我指明正确的方向。

这是与我正在拍摄的类似示例-> http://tozon.info/gallery/


我有以下内容,它可以读取图像,但只能从 http 读取,就像这样 -->

BitmapImage bi = new BitmapImage();
        bi.UriSource = new Uri("http://upload.wikimedia.org/wikipedia/en/d/d6/Dragon_Age.jpg");
        MyImage.Source = bi;

我想要做的是从本地网络共享(\\server\share\filename.jpg)或服务器上 Web 部分的文件夹中读取它们。

4

2 回答 2

1

因此,要记住的一件事是 Silverlight 是一种客户端技术。您在 Silverlight 中编写的所有代码都在客户端计算机上执行,而不是在 Web 服务器上。因此,如果您问“Silverlight 是否可以从文件夹中读取文件?”,您似乎是在询问 Silverlight 是否可以从客户端机器上读取文件,而答案是否定的,因为这显然是一个主要的安全问题。

但我假设您想从服务器上的目录中读取文件,而不是在客户端上;这也无法做到,因为代码不在服务器上执行。

所以,要做你想做的事,你可以这样做:通过网络服务器使图像目录可用,这样你就可以通过http://server/images/FirstnameLastinitial.jpg等访问图像。现在,您可以使用常规 Image 元素显示图像,将 Source 设置为适当的 URL。

那么剩下的问题是;Silverlight 应用程序如何知道可用的图像?即它需要能够以某种方式“获取目录列表”。这是必须由 Web 服务器提供的东西。如果您愿意,您可以设置某种 Web 服务,Silverlight 应用程序可以调用该服务来获取图像 URL 列表。或者,如果您想寻求完全简单的解决方案;只需在http://server/images/list.txt放置一个文本文件,其中包含在那里找到的图像列表,并从 Silverlight 使用 WebClient.DownloadString 下载此列表。

是使用 Web 服务还是文本列表取决于您(Web 服务可能更好,但稍微复杂一些)。

于 2009-11-11T20:14:46.663 回答
0

我并不是要跑题或任何事情,您绝对需要使用 Silverlight 吗?我没有安装它,也从未使用过它,所以我看不到你在链接中发布的网站上的样子。我所知道的是,在 PHP 中,从目录中的图像将图片作为相册输出非常非常容易:

1 - 扫描图片目录:

 $dir = opendir($filePath);
 $fileCount = 0;
 while ($file = readdir($dir)) {
     if (eregi($Ext,$file)) { //$Ext = Extension of the file you're looking for (.jpg)
         $files[$fileCount] = $file;
         $fileCount++;
     }
 }
 sort($files);//This will, obviously, sort the array alphabetically.
 return $files;

2 - 通过数组运行(无论你喜欢什么)并在某种容器中输出文件路径:

echo '<div id="img'.$i.'" class="pictures"><img src="'.$ArrayOfPictures[$i].'" /></div>';

3 - 差不多了。您还可以添加一个功能来构建缩略图,然后添加一个指向缩略图的链接,单击该链接将全屏显示图像。您可以使用 CSS 和 javascript 使用 alpha 使鼠标悬停时图片“更白”。PHP 很简单,几乎所有事情都已经完成。谷歌会是一个很好的朋友:)

如果您被 Silverlight 卡住了,那么我很抱歉浪费了您的时间。

于 2009-11-11T14:51:56.250 回答