我有这个应用程序,我必须在其中接收字节数组形式的图像。该图像之前已以这种方式发送到服务器:
image = image.createScaledBitmap((Bitmap) extras.get("data"), 380, 400, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imagen.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
图像被发送到服务器。应用程序的另一部分调用服务器以获取包含图像的 JSON。我将它存储在一个字符串中,然后我用它string.getBytes()
来获取字节数组,如下所示:
byte[] array=stringimage.getbytes();
数组类似于:119,80,78,71,13,10...
我现在想“好的,我现在使用 BitmapFactory,decodeByteArray 并获取我的位图”,但它返回 null。我开始谷歌搜索并在 Stack Overflow 中查看这里,我看到了解决问题的各种方法。其中之一:
image = Bitmap.createBitmap(380, 400, Bitmap.Config.RGB_565);
int row = 0, col = 0;
for (int i = 0; i < array.length; i += 3) {
image.setPixel(col++, row, array[i + 2] & array[i + 1] & array[i]);
if (col == 380) {
col = 0;
row++;
}
}
这有点像解码图像并手动设置像素。
它不起作用。
另一个:
byte[] array=Base64.decode(fotostring.getBytes(),Base64.DEFAULT);
它不起作用
我的问题是:我必须如何让我负责服务器端的伙伴给我发送阵列?以哪种格式?他没有以任何方式触摸我之前发送给他的图像。他需要做吗?
或者,我必须如何管理字节数组?我不需要“翻译”成另一种格式,decodeByteArray 可以理解吗?