我有一个ByteBuffer,我需要将其内容添加到POST请求中,以便远程显示代表的图像;但我无法弄明白该怎么做。
这样做不起作用:
byteBuffer.array()
我曾尝试将其转换为字节数组,但由于图片显示不正确而无效:
byte[] byteArray = new byte[byteBuffer.remaining()];
frame.duplicate().get(byteArray);
HttpResponse response = null;
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(URL);
post.setEntity(new ByteArrayEntity(byteArray));
此外,我考虑将其转换为图像并获取其字节数组,但我不知道该怎么做以及它是否有用......
任何帮助都将受到赞赏。
答案 0 :(得分:1)
使用allocate
创建的ByteBuffer(不一定是allocateDirect
)应该有一个支持数组,请与hasArray()
/ isDirect()
一起检查。
byteBuffer.flip(); // Sets limit to current write position.
int n = byteBuffer.limit();
byteBuffer.rewind(); // Already done by flip I think.
byte[] data = new byte[n];
byteBuffer.get(data);
答案 1 :(得分:0)
private static byte[] getByteArrayFromByteBuffer(ByteBuffer byteBuffer) {
byte[] bytesArray = new byte[byteBuffer.remaining()];
byteBuffer.get(bytesArray, 0, bytesArray.length);
return bytesArray;
}