我需要将图像发送到服务器, 我有一个3.30 MB大小的图像,我使用:
将其转换为字节数组 ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
然后使用:
到base64Base64.encodeToString(byteArray , Base64.DEFAULT)
编辑:如果我检查字节数组(bytearray)的长度,它是20 MB! 但在PC或手机上的尺寸显示为3.30 MB
返回字符串的长度是28 MB,任何解释和解决方案?
答案 0 :(得分:1)
您正在压缩质量为100和PNG的位图。请使用JPEG和60或75质量。
答案 1 :(得分:0)
new Bar(foo) { Name = "John" }
答案 2 :(得分:0)
压缩位图的质量为100意味着没有太大的压缩,并且在第一个代码中得到的图像更大:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
byteArray这里有20MB
Base64编码大于字节数
是正常的创建Base64是为了发送/存储二进制数据,您只能发送文本 并且在字节中使用256个64个字符,或者每个字节使用相同的8个字符 https://en.wikipedia.org/wiki/Base64
Base64.encodeToString(byteArray , Base64.DEFAULT)