0

我有几个UIElements,包括一个Image(带有外部 URL 图像),然后我想捕捉这些元素的缩略图,所以我WriteableBitmap用来捕捉每个 UIElement 的像素。

但是,当我尝试捕获像素以供Image使用时:

WriteableBitmap wb = new WriteableBitmap(image, new ScaleTransform()
                     {
                         ScaleX = 0.5,
                         ScaleY = 0.5,
                     });
...
wb.GetPixeli(x, y); // Throws exception

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(v=vs.95).aspx

如果 WriteableBitmap 是使用跨域内容构造的,则 WriteableBitmap 类具有限制对 Pixels 数组的访问的安全模型。例如,使用引用来自另一个域的 URL 的 BitmapImage 构造的 WriteableBitmap 不允许访问其 Pixels 数组。该限制扩展到使用 URL 派生属性设置其部分或全部内容的任何 UI 元素。特别是,此限制适用于“从 MediaElement 抓取正在运行的视频的帧”场景。如果 MediaElement.Source 引用来自另一个域的视频文件,则通过引用 MediaElement 作为元素源创建的 WriteableBitmap 会限制对 Pixels 数组的访问。

那么为了捕捉这几个UIElements(包括一个Image元素)的缩略图,我是否必须将图像下载到临时目录然后渲染它?

4

1 回答 1

0

我的建议是仔细检查您要执行的操作 - 如果您正在编写 Silverlight 应用程序,您可能希望在下载完整图像之前减少流向客户端的数据量。在服务器端(即时或缓存)生成这些缩略图并提供更小的缩略图会更好吗?在哪里可以使用完整的 .NET 框架来生成缩略图?

于 2012-11-16T11:44:32.493 回答