首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从位图压缩后的Android图像大小比加载到位图的原始图像大得多

从位图压缩后的Android图像大小比加载到位图的原始图像大得多
EN

Stack Overflow用户
提问于 2020-02-22 22:48:07
回答 3查看 451关注 0票数 1

我现在是android编程的新手。在处理图像时,我感到非常困惑。我现在正在尝试加载一个jpeg图像到位图,然后将位图转换为字节数组,反之亦然。我使用第一种情况进行测试:将jpeg加载到位图并获取字节数组。我的输入图像为520 x 390 (24位颜色) 24KB JPEG。我的输出字节数组是~ 290000字节~ 290KB,比原来的字节数组要大得多。如何将其转换为与原始JPEG相同或几乎相同大小的字节数组?因此,我想知道反向转换是否会将字节数组转换为相同大小的jpeg?

下面是我的代码:

代码语言:javascript
复制
    Resources r = this.getResources();
    Bitmap bm  = BitmapFactory.decodeResource(r,R.drawable.plot);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.JPEG,100,baos);
    byte[] byteArray = baos.toByteArray(); 
EN

回答 3

Stack Overflow用户

发布于 2020-02-22 22:51:40

bitmap.compress具有质量属性(第二个属性)。尝试将if从100减少到一个较小的数字(0-100)。

票数 0
EN

Stack Overflow用户

发布于 2020-02-22 23:57:53

您加载的JPEG最有可能具有一定程度的压缩,这就是使JPEG更小的原因,通过牺牲质量来换取大小。

在您的代码中,您将压缩级别设置为100,这意味着根本没有压缩,因此位图以JPEG格式保存,但没有任何大小/质量降低。

如果您将压缩级别更改为小于100的任何值,您将看到文件大小如何变小。尝试在80到90之间以保持较好的质量,同时获得较小的文件。

票数 0
EN

Stack Overflow用户

发布于 2020-02-23 02:02:36

如何将其转换为与原始JPEG相同或几乎相同大小的字节数组?

如果需要,只需将jpg文件加载到字节数组中即可。

不需要先转换为位图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60353328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档