java - 如何在java中压缩动画webp而不将其转换为静态?

标签 java android-bitmap fileoutputstream webp

似乎位图压缩正在使动画 WEBP 文件静态或其他什么,当我将它们用作动画贴纸文件时,我从 WhatsApp 收到一条错误,表明此贴纸包有问题。如果我通过将动画 _sticker 标志设置为 false 来使用静态 webp,则不会发生该错误。然后,WhatsApp 接受这些相同的动画 WEBP 文件作为静态贴纸包。在查看了所有代码后,我陷入了压缩并保存 WEBP 的方法。我应该确认那些 WEBP 文件是否仍然包含多个帧。如何检查帧数或检查文件在压缩/保存后是动画还是静态?

public static void Save(Bitmap bitmap1, String name1, String folder) {
        
        File dir = new File(path + "/" + folder).mkdirs();
        
        File file = new File(dir, name1);
        
        if (file.exists())
            file.delete();
    
        
        try {
            FileOutputStream ops = new FileOutputStream(file);
            Bitmap1.compress(Bitmap.CompressFormat.WEBP, 90, ops); 
            ops.flush();
            ops.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 }

最佳答案

不要使用 Bitmap.compress。它将存储单帧。相反,您可以使用不压缩的方式存储它

InputStream inputStream = new URL(sUrl).openStream();
copyInputStreamToFile(inputStream,file);

copyInputStreamToFile():您必须定义读取butes数组中的输入流并写入FileOutputStream的方法;

关于java - 如何在java中压缩动画webp而不将其转换为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70517477/

相关文章:

java ;文件输入输出中特定字符的换行

java - 在 map 中设置多个值

java - 对同时包含数字和字母的Arraylist进行排序

java - 找不到存储的图像

java - Android,从输入流创建文件卡在while循环内

java - Spring Boot jar 保存到现有文件

java - 使用 PDFBox 从字符串中删除非法字符

java - HBase 和 Solr 独立示例图实例化错误

android - 位图:无法获取对像素的强引用

android - 如何在Android上检查位图是否为空(空白)