개발/javascript

ajax 에서 array buffer 를 이미지로 변환하기

LukeHan1128 2024. 1. 25. 20:00
반응형

 

JAVA

public byte[] getImage(HttpServletRequest request, HttpServletResponse response) throws Exception{
  BufferedImage bi = ImageIO.read(new File("c:\\image\\mypic.jpg"));

  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  ImageIO.write(bi, "jpg", baos);

  return baos.toByteArray();
}

 

 

 

 

javascript

var httpRequest = new XMLHttpRequest();

httpRequest.open('GET', 'http://localhost:8080/image', true);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.responseType = "arraybuffer";

httpRequest.onreadystatechange = function(event){
  const { target } = event;

  if(target.readyState === XMLHttpRequest.DONE){
    const { status } = target;

    if(status === 0 || (status >= 200 && status < 400)){
      console.log('Success');
      document.querySelector('#img').src = "data:image/png;base64," + btoa(String.fromCharCode.apply(null, new Uint8Array(target.response)));
    }
    else{
      console.log('Failed');
    }
  }
};
httpRequest.send();

 

JAVA 에서 전송한 byte 배열을 받기 위해 responseType 을 arraybuffer 로 설정하여 요청한다.

 

전달 받은 byte 배열 데이터를 변환한 후 img 태그의 src 에 반영하여 이미지를 확인한다.

 

 

 

 

참고

 

반응형