未来の自分へ知識谷金

ゆーきのエンジニアブログ
C#PythonVisual Studioプログラミング

C#とPython間で画像を受け渡す【クラス】

.NETC#PythonVisual StudioVisual Studio 2022

C#とPythonでHTTP通信を行い、画像を受け渡すコードを記載します。

■C#側

public class RestClient
    {
        private static readonly string BASE_URL = "http://localhost:5000";
        private HttpClient client = new HttpClient();

        public async Task<S> PostAsync<F, S>(F reqData)
        {
            string url = $"{BASE_URL}/api/data";
            string jsonString = JsonSerializer.Serialize(reqData);
            var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync(url, content);
            if (response.IsSuccessStatusCode == false) return default(S);
            string responseBody = await response.Content.ReadAsStringAsync();
            return JsonSerializer.Deserialize<S>(responseBody);
        }
    }

■Python側

from flask import Flask, jsonify, request

@app.route('/api/data', methods=['POST'])
def post_api_data():
    request_data = request.get_json()
    img_b64 = request_data['img_b64']
    image = Base64Encoder.DecodeImage(img_b64)
    response_data = request_data
    response_data['img_b64'] = Base64Encoder.EncodeImage(image)
    return jsonify(response_data)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

これでC#とPython間で画像の受け渡しができます。

以上!