C#调用百度图像识别出image format error[图像格式错误]是怎么回事

在C#窗体应用程序中使用pictruebox控件装了一个图片
var picclient = new Baidu.Aip.ImageClassify.ImageClassify("key", "key")
{
Timeout = 60000 // 修改超时时间
};
var picclient = new Baidu.Aip.ImageClassify.ImageClassify("NpBGfUR6qBGtFo5bIFbiPCO9", "S0L7LXAewfW7BBKmbXd0EQ8iRzEYRGqc")
{
Timeout = 60000 // 修改超时时间
};

                Image img = this.picbPreview.Image;
                BinaryFormatter binFormatter = new BinaryFormatter();
                MemoryStream memStream = new MemoryStream();
                binFormatter.Serialize(memStream, img);
                byte[] bytes = memStream.ToArray();
                var picoptions = new Dictionary<string, object> { };

                var results = picclient.AdvancedGeneral(bytes, picoptions);
                if (results != null && results.ToString() != null && results.ToString().Length > 0)
                {

                    var json = JsonConvert.SerializeObject(results);
                    ImageRecognitionModel model = DeserializeJsonToObject<ImageRecognitionModel>(json) ?? new ImageRecognitionModel();
                    ImageRecognitionBind(model);
                }

结果返回的是图像格式错误,会不会是转base64编码有问题,求大神解答

假如我给一个按钮,打开选择文件,选中一个图片,获取到图片路径
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
string _path = ofd.FileName;
var picclient = new Baidu.Aip.ImageClassify.ImageClassify("key", key"")
{
Timeout = 60000 // 修改超时时间
};

        var image = File.ReadAllBytes(_path);


        var picoptions = new Dictionary<string, object> { };

        var results = picclient.AdvancedGeneral(image, picoptions);
        if (results != null && results.ToString() != null && results.ToString().Length > 0)
        {

            var json = JsonConvert.SerializeObject(results);
            ImageRecognitionModel model = DeserializeJsonToObject<ImageRecognitionModel>(json) ?? new ImageRecognitionModel();
            ImageRecognitionBind(model);
        }
                    这样是能正确获取到数据的,appkey我没有放出来,请见谅

1个回答

图片格式必须是jpg,必须正确编码,如果还不行,建议联系百度技术支持,也不排除他们的服务不稳定。

qq_37785380
sunup_yi 你好,我解决了,谢谢你,使用Image img = this.picbPreview.Image; MemoryStream ms = new MemoryStream(); byte[] imagedata = null; img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); imagedata = ms.GetBuffer();这样转码就对了
4 个月之前 回复
qq_37785380
sunup_yi 有种情况是窗体中我通过拍照得到了一张图片,是直接是image类型的显示在控件上,我就使用 Image img = this.picbPreview.Image; BinaryFormatter binFormatter = new BinaryFormatter(); MemoryStream memStream = new MemoryStream(); binFormatter.Serialize(memStream, img); byte[] bytes = memStream.ToArray();这种方式拿到的byte[] 传过去就返回错误json,说图像格式不正确,你能看看是什么原因吗?谢谢
4 个月之前 回复
qq_37785380
sunup_yi 图片格式确认是jpg呢,目前是这种情况我直接OpenFileDialog这种格式打开一个文件,拿到图片路径,使用File.ReadAllBytes(_path)这种方式转的byte数组传过去是能正确返回json数据
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问