2017-04-07 10 views
1

Cq5 이미지 구성 요소에는 이진 이미지 데이터가 있습니다.이 데이터를 API로 노출해야합니다.이미지 데이터를 InputStream 문자열로 변환하고이 문자열에서 이미지를 제공하지 않음 이미지를 제공하지 않습니다.

이렇게하려면 입력 스트림을 가져 와서 String으로 읽으려고했습니다.

InputStream is = jcrnode.getProperty(JcrConstants.JCR_DATA).getBinary().getStream(); 

String imageData = jcrnode.getProperty(JcrConstants.JCR_DATA).getString(); 

문자열을 FileOutputStream에 쓰려고하면 이미지가 표시되지 않습니다.

jcr : data를 수동으로 다운로드하고 파일 뷰어를 열려고하면 이미지가 나타납니다. 그러나 이것을 문자열로 변환하면 나에게 도움이되지 않습니다. 이것에 대한 제안.

+2

왜 문자열로 변환해야합니까? 문자열은 쓰레기처럼 보일 것입니다. –

+1

이 작업을 수행 할 이유가 확실하지 않지만'String imageData = Base64.encodeBytes (jcrnode.getProperty (JcrConstants.JCR_DATA));'를 사용하고 'Embedded Image

+0

이미지 jcr을 노출 필요 : 다른 환경으로 이미지를 보내고 다른 환경으로 데이터를 보내야합니다. 가장 좋은 방법에 대한 모든 제안이. 인코딩 이미지 바이너리 및 해독하고 다시 이미지를 시도했다. 자바 6 날 힘든 것 같아요. 모든 예제 – ADM

답변

2

감사합니다. i.net은 위의 제안에 따라 해결할 수있었습니다.

StringBuilder dataUri = 새 StringBuilder(); dataUri.append ("data : image/jpeg; base64"); dataUri.append (StringUtils.newString Utf8 (Base64.encodeBase64 (imageByteArray, false))));

dataUri.toString()은 포함 된 참조 이미지로 사용할 수있는 문자열입니다.

+0

예, 그게 핵심입니다. Base64로 HTTP 전송 용 바이너리를 인코딩해야하며 DAM 속성에서 MIME 유형을 가져 와서 더 일반적인 형식으로 만들 수도 있습니다. –