Java 是否可以确定Android位图上的png压缩类型?

Java 是否可以确定Android位图上的png压缩类型?,java,android,png,android-framework,Java,Android,Png,Android Framework,我知道有不同类型的png压缩格式(例如使用调色板)。是否可以(通过编程)确定在Android中压缩位图时要使用的类型 如果答案是否定的,有人能提出这样做的方法吗? 谢谢在Android中没有客户端API来指定,因为Bitmap.compress()调用了一个不接受此类参数的函数 然而,你可以使用(顺便说一句,我认为Android在其本机实现中使用的是这个),它当然允许你所需要的 但是我真的不认为在一个GB大小的驱动器中节省大量的KB是值得的。你也可以使用它,它允许完全控制写入参数。最终我不得不对

我知道有不同类型的png压缩格式(例如使用调色板)。是否可以(通过编程)确定在Android中压缩位图时要使用的类型

如果答案是否定的,有人能提出这样做的方法吗?
谢谢

在Android中没有客户端API来指定,因为
Bitmap.compress()
调用了一个不接受此类参数的函数

然而,你可以使用(顺便说一句,我认为Android在其本机实现中使用的是这个),它当然允许你所需要的


但是我真的不认为在一个GB大小的驱动器中节省大量的KB是值得的。

你也可以使用它,它允许完全控制写入参数。

最终我不得不对Android的skia库进行更改,因为我不想添加任何Java代码(我需要快速进行png压缩)。 如果有人需要这样的解决方案, 我把我的上传到:

具体根据什么确定?。在我的情况下,我更希望它基于位图中的颜色数。我使用的位图不包含may颜色,因此我想使用它来为我的利益服务。在我的应用程序中,我没有在我的设备上保存png。我正在将它发送到另一个设备。因为涉及到很多位图,所以我需要一种更好的方法来压缩它们。我试图从java代码中找到访问libpng方法的方法。我什么都没想到。你知道这是否可行吗?看看leonbloy在回答中提到的PNGJ项目(我不知道也从未使用过),我唯一的问题是我不能使用Android位图对象并通过PNGJ压缩它。我必须使用Android方法压缩图像,然后使用PNGJ读取和重写图像。有没有办法在不创建两个文件的情况下执行此操作?我需要尽快完成整个过程。(顺便说一句,我知道你是PNGJ的编码员,我想说谢谢你这个很棒的工具)你应该能够使用PNGJ,通过调用Bitmap.getPixels()将位图对象直接编码到PNG文件,每行一个。您必须自己做的唯一一件事是从ARGB(位图使用)到sample per int(PNGJ使用)的解包转换。我没有尝试过,但它应该很简单(我可以在ImageLineHelper中作为实用方法添加它)。