如何实现我的 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://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);
}
}
那就关注一下博文吧,觉得可行,希望对你有所帮助,如果还有其他问题,请随时告诉我。
我目前正在尝试编写一个函数,将 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://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);
}
}
那就关注一下博文吧,觉得可行,希望对你有所帮助,如果还有其他问题,请随时告诉我。