Как реализовать функцию My Azure для ее использования в PowerApps - PullRequest
0 голосов
/ 11 февраля 2020

Я сейчас пытаюсь написать функцию для объединения двух изображений из azure хранилища в одно изображение. Я не знаю, как настроить класс функций так, чтобы я мог запускать функцию в Powerapps с 2 выбранными изображениями.

Это мой класс

    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);
        }


    }

}

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Во-первых, предположим, что вы уже знаете, что не можете напрямую вызывать свою функцию, особенно если вы используете функцию запуска BLOB-объектов.

Далее рассказывается о том, как использовать функцию в мощных приложениях. Об этом есть блог: Использование Azure функций в PowerApps . Вам нужна функция триггера http и определите подпись REST с помощью Swagger, а затем используйте пользовательский API в мощных приложениях.

Последнее, что нужно сделать, - получить два больших двоичных объекта в функции триггера http. Из привязки blob do c вы можете получить Input-using , вы можете найти функцию сценария c# или c#, которая поддерживает CloudBlockBlob привязку.

Ниже это пример чтения из двух двоичных объектов txt с функцией HTTP-триггера, вы можете добавить привязку вывода для хранения выходного изображения

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);

        }
    }

enter image description here

Затем следите за блогом, предположите, что это может сработать, надеюсь, это поможет вам, если у вас все еще есть другие проблемы, пожалуйста, не стесняйтесь дай мне знать.

0 голосов
/ 11 февраля 2020

Если вы запускаете функцию через HTTP, вы можете использовать пользовательское соединение API в Power Apps для подключения к вашему API и отправки / запроса данных и т. Д. c.

Вам потребуется развернуть свою функцию где-то предпочтительно 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...