HVideoManagerO.cs 3.8 KB
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using TSA_V.Common;

namespace TSA_V.DeviceLibrary
{
    public  class HVideoManagerO
    {

        public static string LastMsg = "";

        public static bool StartRun()
        {

            int ServerPort = 8765;
            if (ServerPort > 0)
            {
                HttpServer.Start(ServerOnReceived, ServerPort);
                LogUtil.info("启动HttpServer接口服务完成, 端口号【" + ServerPort + "】");
            }
            return true;
        }


        public static void StopRun()
        {
            HttpServer.Stop();
        }

        private  static string ImgUpload = "/rest/api/v1/imgUpload";
        private static string ServerOnReceived(string reqPath, string paramStr)
        {
            if (paramStr == "" || reqPath=="")
            {
                return "";
            }
            LogUtil.info("ServerOnReceived [" + reqPath + "] [" + paramStr + "] ");
            //paramStr = paramStr.Replace("%23", "#");
            try
            {
                Dictionary<string, string> paramMap = JsonHelper.DeserializeJsonToObject< Dictionary<string, string>>(paramStr);
                if (reqPath.Equals(ImgUpload))
                {
                   bool result=paramMap.TryGetValue("input", out string imgStr);
                    if (result)
                    {
                        LastMsg = imgStr;
                    } 
                }

                else
                {
                    LogUtil.info("[" + reqPath + "]没有相关处理");
                    return "[" + reqPath + "]没有相关处理";
                }
                return "OK";
            }
            catch (Exception ex)
            {
                LogUtil.info("[" + reqPath + "][" + paramStr + "]处理错误:" + ex.ToString());
                return "Error";
            }
        }
        private static Dictionary<string, string> GetParam(string paramStr)
        {
            Dictionary<string, string> paramMap = new Dictionary<string, string>();

            try
            {
                string[] paramArray = paramStr.Split('&');
                foreach (string param in paramArray)
                {
                    string[] data = param.Split('=');
                    if (data.Length == 2)
                    {
                        string paramName = data[0];
                        string paramValue = data[1];
                        //LogUtil.info("解析参数【"+paramStr+"】 : ["+paramName+"]["+paramValue+"]");
                        paramMap.Add(paramName, paramValue);
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("解析参数【" + paramStr + "】出错:" + ex.ToString());
            }
            return paramMap;
        }



        private static Bitmap Base64StringToImage(string inputStr)
        {
            try
            {
                byte[] arr = Convert.FromBase64String(inputStr);
                using (MemoryStream ms = new MemoryStream(arr))
                {
                    Bitmap bmp = new Bitmap(ms);
                    ms.Close();
                    return bmp;
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("Base64StringToImage 转换失败/nException:" +ex.ToString());
                return null;
            }
        }

        public static   Bitmap GetLastImg()
        {
            string inputStr = LastMsg;
            if (LastMsg != "")
            {
                return Base64StringToImage(inputStr);
            }
            return null;
        }

    }
}