我正在尝试使Azure函数通过URL方案使用查询字符串返回调整大小后的图像来调整图像大小。我看了几个图书馆。到目前为止,最有前途的似乎是SixLabors ImageSharp解决方案,该解决方案具有中间件,如ImageSharp.Web
。
不幸的是,我只能找到有关如何设置ASP.NET或WebAPI的信息,类似于此处的要求。ImageSharp.Web-在Asp.Net Core 3.1中按querystring调整图像大小。我可以自己编写一些代码来处理查询解析,但是我希望已经存在一些东西,因此不需要自己动手做。
是否有一个库可以让我通过查询字符串调整图像大小并在Azure函数v2 / v3中运行?
使用Azure FunctionHttp Trigger
并SixLabors ImageSharp
做到这一点。
首先,您必须实现DownloadImageAsync才能从此示例代码从url下载文件:
const int _downloadImageTimeoutInSeconds = 15;
static readonly HttpClient _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(_downloadImageTimeoutInSeconds) };
public static async Task<byte[]> DownloadImageAsync(string imageUrl)
{
try
{
using (var httpResponse = await _httpClient.GetAsync(imageUrl))
{
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
return await httpResponse.Content.ReadAsByteArrayAsync();
}
else
{
//Url is Invalid
return null;
}
}
}
catch (Exception e)
{
//Handle Exception
return null;
}
}
现在,我们必须使用GET方法(匿名授权级别)创建一个Azure Function,以确保所有客户端都可以更轻松地调用它。用于调整大小的ImageSharp在这里,并转换为我在这里引用的based64
[FunctionName("MyImageResizer")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
ILogger log)
{
string url = req.Query["url"];
string width = req.Query["width"];
string height = req.Query["height"];
string result = string.Empty;
using (Image image = Image.Load(await DownloadImageAsync(url)))
{
image.Mutate(x => x.Resize(int.Parse(width), int.Parse(height)));
using (var ms = new MemoryStream())
{
image.Save(ms, new PngEncoder());
image.Dispose();
byte[] imageBytes = ms.ToArray();
result = Convert.ToBase64String(imageBytes);
imageBytes = null;
ms.Dispose();
}
GC.Collect();
}
return new OkObjectResult(result);
}
启动程序后,终端将显示MyImageResizer函数及其请求网址
邮递员中的测试要求
结果是:
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
在线使用一些工具进行检查,例如Base64-to-image-converter
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句