c# - 在线程池线程的 Windows Phone 7 上调整图像大小?

标签 c# .net image windows-phone-7

我正在编写一个处理大量图像的 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/

相关文章:

c# - 如何从 .NET 对 .NET 中定义的 COM 对象执行后期绑定(bind)调用(通过 DispID)?

c# - 如何在控制台应用程序中退出时执行 "flush"ApplicationInsightsTraceListener?

.net - DataGridView图像仅显示 "System.Drawing.Bitmap"

c# - DataGridView 设置行高不起作用

c# - neo4j 任务已被取消

c# - 如何为调试和发布配置编写测试

directx - 在 SharpDx 中保存为 png

ios - 加载图像不是从 .xcassets 文件夹?

c# - 为什么未处理的异常在调试时不会终止进程?

.NET Process.Kill() 以安全的方式