调取c++dll接口取到图片byte[],C#中转换图片异常

c++接口获取byte[448*448],转图片时报以下错误

img

如果调大接受byte数

img

img
组为byte[450*450],不会报错但是图片为空。

参考https://blog.csdn.net/qq_32250495/article/details/50925592

试一下这个
https://gitee.com/apull/EXEStart/blob/master/EXEStart/GameItem.cs
这个是字符串保存image的2转换个方法。

         /// <summary>
        /// 对图像进行Base64编码
        /// </summary>
        /// <param name="img">要进行编码的图像</param>
        /// <returns>编码后的Base64字符串</returns>
        public static string imgToBase64(Image img)
        {
            if (img == null) return "";
            string base64String;
            byte[] bytes;

            using (MemoryStream ms = new())
            {  
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                bytes = ms.GetBuffer();
            }
            base64String = Convert.ToBase64String(bytes);
            return base64String;
        }

        /// <summary>
        /// 转换Base64字符串为图像
        /// </summary>
        /// <param name="base64String">图像编码后的Base64字符串</param>
        /// <returns>成功返回图像,失败返回null</returns>
        public static Image Base64ToImg(string base64String)
        {
            if (base64String.Length == 0) return null;
            Image img = null;
            byte[] bytes = Convert.FromBase64String(base64String);
            try
            {
                using (MemoryStream ms = new(bytes, 0, bytes.Length))
                {
                    img = Image.FromStream(ms, true);                    
                }
            }
            catch { }
            return img;      
        }

先将byte转base64字符串,再将base64转图像,就好了。常碰到这样的问题,转一下就可以用了