Android从SD卡读取图像。错误的大小

时间:2012-07-11 15:01:20

标签: android image sd-card filesize

我正在创建一个Android应用程序,并希望从SD卡读取文件并将其发送到其他Web服务。一切正常但是当我从SD卡读取文件时,它的文件大小比原始文件大得多。一个10 KB的文件正在获得260 KB。

我正在做以下事情......

File f = new File(uri);
Log.d("ORIGINAL FILESIZE:"+f.length()); 

在SDCARD上存档10752字节。

这与手机上的图片尺寸完全相同。

Bitmap bmp = BitmapFactory.decodeFile(uri);
ByteArrayOutputStream bao = new ByteArrayOutputStream();

bmp.compress(Bitmap.CompressFormat.JPEG, 100, bao);
Log.d("FILESIZE AFTER:"+bao.size());

解码/压缩后文件大小为260904字节。

这是服务器接收和写入磁盘的文件大小。 这是相同的图像和质量,但大约20倍。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您的原始文件是具有高压缩率的jpeg,则解码位图要大得多是正常的,特别是如果您在compress()方法中使用质量100(这意味着高质量)。

您是否尝试使用质量较低的compress()(参考documentation)?

答案 1 :(得分:0)

没错。或者至少它可能是。内存中位图的字节表示需要(32位图像)height * widht * 4个字节。当然,它与文件大小不同,因为压缩。