gpt4 book ai didi

java - 如何使用 Java 在浏览器上显示图像?

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:10 25 4
gpt4 key购买 nike

我有一个返回 BufferedImage 值的 Web 服务,但我无法在浏览器中显示该图像,因为我知道我已经将其从 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...

最佳答案

如果我理解正确,您从其余模板中获得的第一个 byte[] 是源图像的完整内存表示形式。如果是这样的话,为什么还要涉及 BufferedImage 呢?难道您不能直接从 Controller 返回 byte[] 并确保在 http 响应 header 中设置适当的 mime 类型吗?

 @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 或让客户端直接访问资源。可能有助于了解一些您根据您的要求获取的图像。

关于java - 如何使用 Java 在浏览器上显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50627293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com