[英]How do I display an image on the browser using Java?
我有它返回一個Web服務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...
如果我理解正確,那么其余模板中已有的第一個byte[]
是源映像的完整內存表示形式。 如果是這樣,為什么還要包含BufferedImage
? 您不能直接從控制器直接返回byte []並確保在http響應標頭中設置適當的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或讓客戶端直接訪問資源。 可能會幫助您了解一些有關您要提取的圖像的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.