我想知道是否可以将图像转换为 base64 字符串,然后使用 GZIP 对其进行压缩并通过 SMS 将其发送到另一部 android 手机,在该手机中对其进行解压缩、解码,然后将图像显示给用户?如果是,那么可能的解决方案是什么?
问问题
805 次
1 回答
0
是的,以下代码将从文件中读取字节,压缩字节并将它们编码为 base64。它适用于所有小于 2 GB 的可读文件。传入 Base64.encodeBytes 的字节将与文件中的字节相同,因此不会丢失任何信息(与上面的代码相反,您首先将数据转换为 JPEG 格式)。
/*
* imagePath has changed name to path, as the file doesn't have to be an image.
*/
File file = new File(path);
long length = file.length();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
if(length > Integer.MAX_VALUE) {
throw new IOException("File must be smaller than 2 GB.");
}
byte[] data = new byte[(int)length];
//Read bytes from file
bis.read(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis != null)
try { bis.close(); }
catch(IOException e) {
}
}
//Gzip and encode to base64
String base64Str = Base64.encodeBytes(data, Base64.GZIP);
EDIT2:这应该解码base64字符串并将解码后的数据写入文件://outputPath是目标文件的路径。
//Decode base64 String (automatically detects and decompresses gzip)
byte[] data = Base64.decode(base64str);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outputPath);
//Write data to file
fos.write(data);
} catch(IOException e) {
e.printStackTrace();
} finally {
if(fos != null)
try { fos.close(); }
catch(IOException e) {}
}
于 2017-03-08T10:21:36.017 回答