将图像数据InputStream转换为字符串并从此字符串返回图像不会给出图像

问题描述:

Cq5图像组件具有二进制图像数据,我需要将这些数据暴露在api中。将图像数据InputStream转换为字符串并从此字符串返回图像不会给出图像

为此,我尝试获取输入流并将其作为字符串读取。

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

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

当试图将字符串写入FileOutputStream我没有得到图像。

在尝试手动下载jcr:数据并打开文件图像查看器时提供图像。 但是,将其转换为字符串时,返回不适用于我。对此有任何建议。

+2

为什么你需要将它转换为字符串?该字符串看起来像垃圾。 –

+1

不知道为什么会这样做,但你可以使用'String imageData = Base64.encodeBytes(jcrnode.getProperty(JcrConstants.JCR_DATA));'然后在'Embedded Image

+0

需要将jcr:data的数据暴露给其他需要使用的环境,发送图像文件,并提供任何有关如何实现这一目的的最佳方式的建议,我尝试编码图像二进制和解码并返回到图像。 。任何示例 – ADM

Thanks @ i.net能够根据您的建议解决上述问题。

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

dataUri.toString()是可用作嵌入参考图像的字符串。

+0

是的,这几乎是关键你需要Base64编码二进制文件进行HTTP传输,你甚至可以从DAM属性中获得MIME类型以使其更通用。 –