如何修复“ InvalidImageSize”,“消息”:“图像大小过小”。

时间:2019-09-27 15:55:23

标签: java spring azure-cognitive-services face-api

[在此处输入图像描述] [1]我一直在尝试使用天蓝色的认知“面部检测”服务。在将图像作为url传递时,我能够从服务中获得肯定的响应,但是在将图像转换为字节后传递时,服务会引发错误: {     “ code”:“ InvalidImageSize”,     “ message”:“图像尺寸太小。” } 我确实确保了(在调试模式下)转换后的字节大小为1194Kb,这远低于限制(1Kb至6Mb)。虽然我不确定自己做错了什么:|

我确实尝试过以多种方式将图像转换为字节,但是都徒劳无功。

我的最终目标是:我需要接受图像的base64表示形式,而不是从本地读取图像,并将其称为人脸检测服务。

任何帮助将不胜感激,谢谢。

class RaceViewSet(ModelViewSet):
    """
    API endpoint for Races.
    """

    model = Race

    def get_serializer_class(self):
        if self.action == LIST_TYPE:
            return RaceListSerializer
        elif self.action in {CREATE_TYPE, OPTIONS_TYPE}:
            return RaceCreateSerializer
        else:
            return RaceDetailSerializer

1 个答案:

答案 0 :(得分:0)

为了简化测试,我只是将响应读取为字符串。我下载了您的图片并在我的代码中使用了它。

我成功使用以下代码:

    public static void TestRestTemplateExchange() {
        RestTemplate rt = new RestTemplate();

        String photo = "C:\\Users\\v-linjji\\Pictures\\test.jpg";
        byte[] readAllBytes = null;
        try {
            readAllBytes = Files.readAllBytes(Paths.get(photo));
        } catch (IOException e) {
            e.printStackTrace();
        }

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.set("Ocp-Apim-Subscription-Key","1fb1*********eb8b");

        Map<String, String> params = new HashMap<>();
        params.put("returnFaceId", "true");
        params.put("recognitionModel", "recognition_02");
        params.put("detectionModel", "detection_02");

        String url = "https://southeastasia.api.cognitive.microsoft.com/face/v1.0/detect";
        ResponseEntity<String> responseEntity = null;
        String responseBody = null;
        try {
            responseEntity = rt.exchange(url,HttpMethod.POST, new HttpEntity<>(readAllBytes, headers), String.class,params);
            responseBody = responseEntity.getBody();
            System.out.println(responseBody);
        }catch (HttpClientErrorException e){
            System.out.println(e.getResponseBodyAsString());
        }
    }

响应:

[{"faceId":"75c3c9dc-be49-4c16-a54c-a1710062967b","faceRectangle":{"top":570,"left":360,"width":444,"height":444}}]