如何将Bitmap转换为base64字符串并保持质量相同?

时间:2016-10-04 07:56:08

标签: android bitmap base64

我试过这段代码:

ByteArrayOutputStream bao = new ByteArrayOutputStream();
mylistImg.get(i).compress(Bitmap.CompressFormat.PNG, 100, bao);
byte[] ba = bao.toByteArray();
ba1 = Base64.encodeToString(ba, Base64.DEFAULT);

但它降低了质量。因为我想将一个Base64字符串发送到php,我必须将我的Bitmap文件转换为字符串而不降低任何质量。 我已经阅读了这些链接,但没有得到任何特别的信息!

How to convert Bitmap to string without losing quality

被修改 我将 ba1 变量作为blob数据发送到oracle数据库 但是当我在数据库中看到结果时,图像质量非常低。 并且我没有在我的PHP代码中更改任何有关图像质量的内容

1 个答案:

答案 0 :(得分:0)

试试这个我只是改变了我们获取字节数组的方式而不是使用.compress方法

//b is the Bitmap
Bitmap b=mylistImg.get(i);
//calculate how many bytes our image consists of.
int bytes = b.getByteCount();
//or we can calculate bytes this way. Use a different value than 4 if you don't use 32bit images.
//int bytes = b.getWidth()*b.getHeight()*4; 

ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer
b.copyPixelsToBuffer(buffer); //Move the byte data to the buffer

byte[] ba= buffer.array();

ba1 = Base64.encodeToString(ba, Base64.DEFAULT);