【问题标题】:Display images from folder with Silverlight(Blend)使用 Silverlight(Blend) 显示文件夹中的图像
【发布时间】:2009-11-11 14:32:27
【问题描述】:

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

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

如果我创建一个 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 部分的文件夹中读取它们。

【问题讨论】:

    标签: .net xml silverlight expression-blend photo


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      我的意思不是跑题或其他任何事情,您绝对需要使用 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,那么我很抱歉浪费了您的时间。

      【讨论】:

      • 绝对不会浪费我的时间。我建议使用 Silverlight,因为我们是 A) 一家 Microsoft 商店,B) 我想学习 SL,C) 我想向老板展示一个 SL 应用程序看起来多么漂亮。如果我在这条路上失败了,那么你的方向就是我前进的方向。
      • 如果您在silverlight 中失败了,在ASP.Net 中很容易做到。如果你是一家以微软服务器为主的微软商店,我会在 php 之前先看看这个。
      • 事实上,大多数可以在 php 中完成的事情都可以在 asp.net 中完成。祝你好运!
      • 顺便说一句,他是我所说的一个例子:dev.kbftech.com/maibec/gallery/index.php?Lang=en 这是我目前正在构建/更新的网站。里面的一切都在 PHP 中,而且非常简单。如果你决定走那条路,我什至可以给你一些代码。一切都是可定制的。这个其他页面也使用了相同的模块:dev.kbftech.com/maibec/inspiration/… 它现在在 IE 中看起来可能非常好,因为我还没有测试它,而且 CSS“hacks”还没有为 IE 完成。应该可以在任何体面的网络浏览器中正常工作;)
      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多