Как отобразить изображение в браузере с помощью Java? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть веб-сервис, который возвращает значение BufferedImage, но я не могу отобразить изображение в своем браузере, зная, что я уже преобразовал его из byte[] в BufferedImage.

Я получаю результат, подобный следующему.

Вот как я конвертирую данные byte[] (я вижу данные в byte[]):

ResponseEntity<byte[]> result =  new RestTemplate(messageConverters).exchange(new URI(url), HttpMethod.GET, httpEntity,  byte[].class );
try {
    BufferedImage img = ImageIO.read(new ByteArrayInputStream(result.getBody()));
    return img;
} catch (IOException e) {
    e.printStackTrace();
}

И я получаю что-то вроде этого:

{  
   "accelerationPriority":0.5,
   "colorModel":{  
      "transparency":3,
      "numComponents":4,
      "numColorComponents":3,
      "colorSpace":{  
         "type":5,
         "numComponents":3,
         "profile":{  
            "mediaWhitePoint":[  
               0.9504547,
               1.0,
               1.0890503
            ],
            "matrix":[  
               [  
                  0.43606567,
                  0.3851471,
                  0.1430664
               ],
               [  
                  0.2224884,
                  0.71687317,
                  0.06060791
               ],
               [  
                  0.013916016,
                  0.097076416,
                  0.71409607
               ]
            ],
            "data":"AAAMSGxjbXMCEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9Q...

1 Ответ

0 голосов
/ 31 мая 2018

Если я правильно понимаю, первое byte[], которое у вас уже есть из шаблона остальных, - это полное представление в памяти исходного изображения.Если это так, то зачем вообще нужно BufferedImage?Разве вы не можете просто вернуть byte [] непосредственно из вашего контроллера и обязательно установить соответствующий тип MIME в заголовке HTTP-ответа.

 @GetMapping("/")
    public ResponseEntity<byte[]> getImage() {
        final ResponseEntity<byte[]> result =  new RestTemplate(messageConverters).exchange(new URI(url), HttpMethod.GET, httpEntity,  byte[].class );
        return ResponseEntity.status(OK)
                .contentType(MediaType.IMAGE_JPEG)
                .body(result.getBody());
    }

На отдельной заметке, если вы просто передаете изображениечерез ваш сервис обратно к клиенту могут быть более эффективные решения, такие как Spring Cloud Zuul или прямой доступ клиента к ресурсу.Может помочь немного узнать об изображении, которое вы получаете с точки зрения ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...