我有几个UIElement
,包括Image
(带有外部网址图片),然后我想要抓住这些元素的缩略图,所以我使用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数组 跨域内容。例如,一个WriteableBitmap 使用引用来自的URL的BitmapImage构造 另一个域不允许访问其Pixels数组。该 限制扩展到使用URL派生属性的任何UI元素 用于设置部分或全部内容。特别是这个 限制适用于“从中获取正在运行的视频的帧” MediaElement“场景。如果MediaElement.Source引用了一个视频 来自另一个域的文件,通过引用创建的WriteableBitmap MediaElement作为元素源限制对像素的访问 阵列。
因此,为了捕获这几个UIElement
(包括Image
元素)的缩略图,我是否必须将图像下载到临时目录然后渲染它?
答案 0 :(得分:0)
我的建议是仔细检查你要做的事情 - 如果你正在编写Silverlight应用程序,在下载完整图像之前,你可能希望减少流向客户端的数据量(s )。生成服务器端的这些缩略图(动态或缓存)并将它们放得更小,并且可以使用完整的.NET框架来生成缩略图是不是更好?