如何将字节流图像数据放入JSON对象?

时间:2016-01-03 08:38:12

标签: java json image bytearray

我想使用字节流格式将多个图像放在JSON对象中,我编写了以下代码。

FileInputStream fin = new FileInputStream(pathToImages+"//"+"01.jpg");

        BufferedInputStream bin = new BufferedInputStream(fin);  

        BufferedOutputStream bout = new BufferedOutputStream(out);  
        int ch =0; ;  

        sun.misc.BASE64Encoder encoder= new sun.misc.BASE64Encoder();
        byte[] contents = new byte[5000000];
        int bytesRead = 0;
        String strFileContents;
        while ((bytesRead = bin.read(contents)) != -1) {
            bout.write(encoder.encode(contents).getBytes());
        }
JsonObject myObj = new JsonObject();

我想将编码的字节流放在myObj中,但不知道该怎么做。

由于

2 个答案:

答案 0 :(得分:1)

JSONObject myObj = new JSONObject();
myObj.put("1",encoder.encode(contents).getBytes());

我认为这会奏效。

答案 1 :(得分:1)

假设您使用的是Java 8和javax.json包:

Path path = Paths.get(pathToImages, "01.jpg");

ByteArrayOutputStream bytes = new ByteArrayOutputStream(
    (int) (Files.size(path) * 4 / 3 + 4));

try (OutputStream base64Stream = Base64.getEncoder().wrap(bytes)) {
    Files.copy(path, base64Stream);
}

String base64 = bytes.toString("US-ASCII");

JsonObjectBuilder builder = Json.createObjectBuilder();
builder.add("data", base64);

JsonObject myObj = builder.build();