我正在编写一个处理大量图像的 Windows Phone 7 应用程序 - 这些图像的范围从几百像素到 1080P( future 可能更高)。
图像是非常耗费资源的,所以我在显示图像之前在手机上缓存 + 调整图像大小。
这意味着在用户输入图像存储的 IP 地址后的首次设置中,我可以要求他们等待几分钟,直到所有图像都被检索/调整大小/缓存。从那时起,他们可以有漂亮而活泼的表现。
目前,我的缓存管理器通过 Uri 和文件位置的字典来跟踪图像。我有一个队列,一次最多处理 5 个图像(异步 Web 请求,调整大小是在线程池线程上完成的)。
我遇到的问题是 Silverlight 中的 WritableBitmap 类是一个 UI 元素,这意味着我必须通过 Dispatcher 转换到 UI 线程来进行实际的大小调整,这是愚蠢的并且会减慢整个过程 - 这也意味着我的缓存管理器实际上是单线程的。
缓存管理器(线程池)-> 异步 Web 请求(线程池)-> 回调(线程池)-> 调整大小(UI 线程)-> 将缓存作业标记为完成(线程池)。
我一直在寻找一个第 3 方库,它将 A) 在 Windows Phone 7 上编译和运行,B) 能够通过操作流或字节数组来调整各种格式的图像的大小,而不依赖于 UI 线程.
有人有这方面的经验吗?
干杯,
泰勒
最佳答案
为了减少下载大小并减轻手机 CPU 的处理负担,我将把这项工作交给 Web 服务。
例如,您可以在网上某处托管类似开源 WebImageResizer 代码的服务 http://webimageresizer.codeplex.com/ - 例如在免费的 AppHarbor 服务器上。
或者您可以使用商业(免费增值)服务,例如:
这两种方法都可以让您在具有超高速连接的服务器上快速处理图像,并通过有限的数据连接将较小的图像传送到手机。
关于c# - 在线程池线程的 Windows Phone 7 上调整图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5280992/