JPEG压缩的尺寸与原来的尺寸相同

JPEG压缩的尺寸与原来的尺寸相同

问题描述:

我自2天起就遇到了这个问题: 我想压缩位图(JPEG)。JPEG压缩的尺寸与原来的尺寸相同

我在这里和Google上发现了一些有用的信息,但没有一个能正常工作。

我的JPEG文件位于资产中。我可以毫无问题地阅读它,检索所有信息。 当我压缩它,我的byte []数组很好,但与decodeByteArray,大小是原来的相同。

这里的代码

InputStream in = assets.open(fileName); 


Config config = Bitmap.Config.RGB_565; 
Options options = new Options(); 

options.inPreferredConfig = config; 

Bitmap bitmap = BitmapFactory.decodeStream(in, null, options); 

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out); 
bitmap = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()),null,options); 

我不知道该怎么办。 预先感谢您的时间

+1

'我想压缩位图(JPEG)。位图不是jpeg。这是什么意思? – greenapps 2014-09-23 08:23:52

+0

对不起,我的位图是从一个JPEG文件(不是PNG)从资产加载(因为我知道一个PNG不能压缩,我认为有用的提及源是一个jpeg – Sirill 2014-09-23 10:25:08

+0

奇怪的是,由此产生的文件大小与原始文件的大小相等,你的压缩质量为50,这样可以减小文件的大小,用15来尝试。 – greenapps 2014-09-23 10:29:25

解码进行压缩的反面:它将它变成原始像素数据。压缩对于减少存储和传输的文件大小非常有用,但是当图像显示时,它会在内存中解压缩至与启动时相同的大小。

如果要使原始像素数据更小,则需要降低分辨率。 ImgScalr库将帮助你:它产生非常好的结果。

(但我不完全知道它是什么你想要的目的。)

+0

ImgScalr +1 。这里是一个链接到最新版本(4.2)在maven仓库中:http://search.maven.org/#artifactdetails%7Corg.imgscalr%7Cimgscalr-lib%7C4.2%7Cjar – 2014-09-23 08:35:09

看看这里的文档。它可以帮助您与其他提示,如减少图像的尺寸..

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html