我有几个UIElement
,包括一个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派生属性的任何UI元素用于设置其部分或全部内容。特别是限制适用于"从MediaElement"场景。如果MediaElement.Source引用视频来自另一个域的文件,通过引用创建的WriteableBitmap作为元素源的MediaElement限制对像素的访问大堆
因此,为了捕捉这几个UIElement
的缩略图(包括Image
元素),我是否必须将图像下载到临时目录,然后进行渲染?
我的建议是仔细检查您正在尝试做什么-如果您正在编写Silverlight应用程序,那么在下载完整图像之前,您可能希望减少流向客户端的数据量。最好是在服务器端(动态或缓存)生成这些缩略图,并将它们交付得更小,以及在哪里可以使用完整的缩略图。NET框架生成缩略图?