如何在C#中获取Steam创意工坊提交内容的缩略图?
获取Steam创意工坊提交内容缩略图的C#实现方法
要实现这个异步方法,核心是利用Steam公开的UGC缩略图URL模板获取图片流,再将流转换为Image对象。具体实现如下:
实现思路
- Steam为每个工坊提交内容提供了固定格式的缩略图地址,模板为
https://steamuserimages-a.akamaihd.net/ugc/{id}/960x540/,其中{id}对应你持有的工坊提交ID。 - 使用
HttpClient异步请求图片流,再将流转换为Image对象,同时处理网络请求、图片解析等异常场景。
完整代码实现
using System.Drawing; using System.Net.Http; using System.Threading.Tasks; public async static Task<Image> GetSteamWorkshopSubmissionThumbnail(string id) { // 构造缩略图URL,960x540为常用缩略图尺寸,可替换为1920x1080等其他尺寸 string thumbnailUrl = $"https://steamuserimages-a.akamaihd.net/ugc/{id}/960x540/"; using HttpClient client = new HttpClient(); try { // 异步获取图片流 using Stream imageStream = await client.GetStreamAsync(thumbnailUrl); // 将流转换为Image对象返回 return Image.FromStream(imageStream); } catch (HttpRequestException ex) { throw new InvalidOperationException($"获取缩略图失败:网络请求异常", ex); } catch (ArgumentException ex) { throw new InvalidOperationException($"解析图片失败:返回内容不是有效图片", ex); } }
注意事项
- 若使用.NET Core 3.1及以上版本,需安装
System.Drawing.CommonNuGet包,该包不再默认包含在.NET Core SDK中。 - 实际项目中建议复用单例
HttpClient,避免频繁创建实例造成资源浪费(示例为简化逻辑使用局部实例)。 - 可根据需求调整URL中的尺寸参数,获取不同分辨率的缩略图。
内容的提问来源于stack exchange,提问作者krptck
相关产品推荐
相关产品推荐

