如何实现我的 Azure 功能以在 PowerApps 中使用它

How to implement My Azure function for using it in PowerApps

我目前正在尝试编写一个函数,将 Azure 存储中的两张图像合并为一张图像。 我不知道如何设置我的功能 class 以便我可以在 powerapps 中使用 2 个选定的图像触发该功能。

这是我的class

    public static class Function1
{
    [Obsolete] // switch TraceWrite to Ilogger
    [FunctionName("Function1")]
    public static void Run(string background, string overlay, CloudBlockBlob outputBlob, TraceWriter log)
    {
        log.Info($"Function triggered with blob\n Background: {background} \n Overlay: {overlay}");

        ConvertMe Converter = new ConvertMe(System.Drawing.Color.Black); // My ImageEdit Class I have written
        Bitmap _Main = new Bitmap(background);
        Bitmap Overlay = Converter.MakeTransparent(overlay);



        using (MemoryStream memory = new MemoryStream())
        {
            Converter.ComebineBitmap(_Main, Overlay).Save(memory, ImageFormat.Jpeg);
            memory.Position = 0;
            outputBlob.Properties.ContentType = "image/jpeg";
            outputBlob.UploadFromStreamAsync(memory);
        }


    }

}

如果您使函数通过 HTTP 触发,您可以在 Power Apps 中使用自定义 API 连接来连接到您的 API 和 send/request 数据等

您需要将函数部署到某个地方,最好是 Azure。

https://powerapps.microsoft.com/es-es/blog/register-and-use-custom-apis-in-powerapps/

https://powerapps.microsoft.com/uk-ua/blog/building-a-custom-api-for-powerapps-using-azure-app-service-web-apps/

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/register-custom-api

首先,假设您已经知道不能直接调用您的函数,尤其是您正在使用 blob 触发器函数。

然后是关于如何在power apps中使用function。有关于此的博客:Using Azure Functions in PowerApps。您需要 http 触发器功能并使用 Swagger 定义 REST 签名,然后在 power apps 中使用自定义 API。

最后就是关于如何在http触发函数中得到两个blob。从 blob 绑定文档中,您可以获得 Input-usage,您可以找到 c# 或 c# 脚本函数都支持 CloudBlockBlob 绑定。

下面是从两个带有http触发功能的txt blob中读取的示例,您可以添加一个输出绑定来存储输出图像。

public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task RunAsync(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [Blob("test/test.txt",FileAccess.ReadWrite)]CloudBlockBlob blob1,
            [Blob("test/out.txt", FileAccess.ReadWrite)]CloudBlockBlob blob2,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string test = await blob1.DownloadTextAsync();
            string outtxt = await blob2.DownloadTextAsync();
            log.LogInformation("test value: " + test);
            log.LogInformation("outtxt value: " + outtxt);

        }
    }

那就关注一下博文吧,觉得可行,希望对你有所帮助,如果还有其他问题,请随时告诉我。