图片获取字节数组byte[]data, 将字节数组转换为String,之后再由String转换为byte[]data,会发现不同

时间:2023-01-11 23:48:43

servlet访问数据库(MySql)获取一张图片的字节数组byte[]data.

将字节数组转换为String类型,

说一下为什么要转换为String呢?

JSON所能够发送的数据类型

1、Number 在JavaScript中的双精度浮点格式  2、String 双引号的反斜杠转义的Unicode  3、Boolean true 或 false  4、Array 值的有序序列  5、Value 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等  6、Object 无序集合键值对  7、Whitespace 可以使用任何一对中的令牌  8、null empty 也就是说JSON不能发送一个自定义的类型,只能发送上面所写的.而图片所能获取的只有byte[]类型,所以需要将 byte[]转换为String发送,

问题再于,将byte[] data1--->String   再 String--->byte[]data2 之后

发现data1 != data2. 会变大,主要是因为String获取地址长度变长

        public String bitmaptoString(Bitmap bitmap) {



// 将Bitmap转换成字符串

String string = null;

ByteArrayOutputStream bStream = new ByteArrayOutputStream();

bitmap.compress(CompressFormat.PNG, 100, bStream);

byte[] bytes = bStream.toByteArray();

string = Base64.encodeToString(bytes, Base64.DEFAULT);

return string;

}


public Bitmap stringtoBitmap(String string) {

// 将字符串转换成Bitmap类型

Bitmap bitmap = null;

try {

byte[] bitmapArray;

bitmapArray = Base64.decode(string, Base64.DEFAULT);

bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0,

bitmapArray.length);

} catch (Exception e) {

e.printStackTrace();

}



return bitmap;

}