在Azure函数中按查询字符串调整图像大小

耶普

我正在尝试使Azure函数通过URL方案使用查询字符串返回调整大小后的图像来调整图像大小。我看了几个图书馆。到目前为止,最有前途的似乎是SixLabors ImageSharp解决方案,该解决方案具有中间件,如ImageSharp.Web

不幸的是,我只能找到有关如何设置ASP.NET或WebAPI的信息,类似于此处的要求。ImageSharp.Web-在Asp.Net Core 3.1中按querystring调整图像大小我可以自己编写一些代码来处理查询解析,但是我希望已经存在一些东西,因此不需要自己动手做。

是否有一个库可以让我通过查询字符串调整图像大小并在Azure函数v2 / v3中运行?

谭阮

使用Azure FunctionHttp TriggerSixLabors 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从PHP中的base 64字符串获取图像大小

来自分类Dev

在Firefox中按比例调整图像大小

来自分类Dev

根据字符串长度调整字体大小

来自分类Dev

根据字符串长度调整字体大小

来自分类Dev

文本对象中的JavaFX调整大小字符串

来自分类Dev

如何使用查询字符串中的数据重写Azure图像URL

来自分类Dev

Javascript按窗口数组中的函数调用[字符串]

来自分类Dev

PHP中字符串的字节大小

来自分类Dev

MongoDB中字符串类型的大小

来自分类Dev

Android将接收到的大图像的大小调整为base64字符串

来自分类Dev

Javascript:调整base64图像的大小并以非异步方式返回字符串

来自分类Dev

在Swift中调整字符串大小

来自分类Dev

查询字符串中的特殊字符

来自分类Dev

在AWS DynamoDB中按字符串数组查询

来自分类Dev

Azure功能-调整存储在Blob容器中的图像的大小

来自分类Dev

如何在JavaScript中按大小写拆分字符串?

来自分类Dev

在Azure Blob存储中调整图像大小

来自分类Dev

从c中的参数函数返回未知大小的字符串

来自分类Dev

按退格键调整字符串大小会引发错误C ++

来自分类Dev

在Photoshop中按最大尺寸调整图像大小

来自分类Dev

在fortran中调整字符串

来自分类Dev

可动态调整大小的C ++字符串数组的类

来自分类Dev

iOS-调整HTML字符串中图像的大小

来自分类Dev

C#-从变量字符串调整位图大小

来自分类Dev

Azure功能-调整存储在Blob容器中的图像的大小

来自分类Dev

在构造函数中调整字符串成员的大小

来自分类Dev

在Azure Blob存储中调整图像大小

来自分类Dev

列表中的字符串大小限制

来自分类Dev

调整函数的输入,从字符串到数据框

Related 相关文章

热门标签

归档