我现在是android编程的新手。在处理图像时,我感到非常困惑。我现在正在尝试加载一个jpeg图像到位图,然后将位图转换为字节数组,反之亦然。我使用第一种情况进行测试:将jpeg加载到位图并获取字节数组。我的输入图像为520 x 390 (24位颜色) 24KB JPEG。我的输出字节数组是~ 290000字节~ 290KB,比原来的字节数组要大得多。如何将其转换为与原始JPEG相同或几乎相同大小的字节数组?因此,我想知道反向转换是否会将字节数组转换为相同大小的jpeg?
下面是我的代码:
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(); 发布于 2020-02-22 22:51:40
bitmap.compress具有质量属性(第二个属性)。尝试将if从100减少到一个较小的数字(0-100)。
发布于 2020-02-22 23:57:53
您加载的JPEG最有可能具有一定程度的压缩,这就是使JPEG更小的原因,通过牺牲质量来换取大小。
在您的代码中,您将压缩级别设置为100,这意味着根本没有压缩,因此位图以JPEG格式保存,但没有任何大小/质量降低。
如果您将压缩级别更改为小于100的任何值,您将看到文件大小如何变小。尝试在80到90之间以保持较好的质量,同时获得较小的文件。
发布于 2020-02-23 02:02:36
如何将其转换为与原始JPEG相同或几乎相同大小的字节数组?
如果需要,只需将jpg文件加载到字节数组中即可。
不需要先转换为位图。
https://stackoverflow.com/questions/60353328
复制相似问题