2016-01-03 1 views
0

Я хочу поместить несколько изображений в объект JSON с использованием формата байтового потока, я написал следующий код.Как поместить данные изображения потока байтов в объект 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, но не знаю, как это сделать.

Благодаря

+1

если вы на Java 8, вы можете захотеть использовать https://docs.oracle.com/javase/8/docs/ api/java/util/Base64.html. – Henry

ответ

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

Я думаю, что это будет работать.

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();