首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法减小PNG的大小?

有没有办法减小PNG的大小?
EN

Stack Overflow用户
提问于 2016-09-30 22:16:03
回答 3查看 7K关注 0票数 3

作为bm.compress(Bitmap.CompressFormat.PNG, 50, out); //here 50 will not work as PNG is lossless

如何减小.png镜像大小?同样,仅仅从可绘制的外部位置来处理会使文件大小增加5到10倍吗?

代码语言:javascript
复制
Bitmap bm=BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);

String extStorageDirectory = Environment.getExternalStorageDirectory().toString();

File file = new File(extStorageDirectory, "ic_launcher.PNG");
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
EN

回答 3

Stack Overflow用户

发布于 2016-09-30 22:32:40

1)如果您的pngs是预定义的,您可以使用tiny png服务来拥有非常小的pngs。该服务将png大小减少了约60%,没有任何明显的变化。2)如果您的pngs是在运行时创建/获取的,请尝试使用Bitmap.createScaledBitmap()方法。使用此方法,您可以创建小尺寸的pngs。

在该方法中

bm.compress(Bitmap.CompressFormat.PNG, 100, outStream)

如果是PNG,则忽略100。因为它是无损的。相反,您可以使用

代码语言:javascript
复制
bm.compress(Bitmap.CompressFormat.JPEG, 80, outStream);

这个会给你更小的尺寸,压缩得更快。

票数 5
EN

Stack Overflow用户

发布于 2017-02-20 00:23:36

我知道这是旧的,但我仍然会回答任何未来的求职者。

Android的Bitmap类在压缩PNG方面相当有限。它只创建有限优化的PNG-32。打包apk文件的aapt程序确实对PNG文件进行了优化。因此,当您将PNG文件解压缩并读取到位图中,然后使用bitmap类对其进行压缩时,您将得到一个大得多的文件。

您可以使用pngj库,它支持更好的压缩PNG文件。

但根据你的描述,你似乎没有编辑应用程序中的文件,你只是从资源复制到卡,所以你需要做的就是包括raw文件夹中的PNG文件,并通过调用openRawResource()检索流到它,并将其直接复制到卡中。在将原始PNG文件包含在应用程序中之前,您可以使用TinyPNG对其进行进一步优化。

票数 4
EN

Stack Overflow用户

发布于 2016-09-30 22:28:26

你想严格遵守PNG吗?Bitmap.compressFormat.JPEG将能够压缩得更多。

减小PNG文件大小的唯一方法是将PNG图像尺寸减小到较小的尺寸。我不认为这是直接的纯Android,但有图像库,你可以使用这一点。

您也可以通过创建一个新的Bitmap对象并使用getPixels(...)手动从原始文件读取,将它们放入口袋以缩小比例,然后编写新的来编写它。但我不建议这样做,调整大小可能很难与抗锯齿一起正常工作。

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

https://stackoverflow.com/questions/39793619

复制
相关文章

相似问题

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