如何缩小GIF大小?

时间:2018-11-12 13:58:13

标签: java android android-studio

这是我创建Gif文件的代码,但是它生成的Gif文件的大小为4.9 MB,包含32帧

@Override
protected Void doInBackground(Void... voids) {

    String dstFile = "result.gif";
    final String filePath = Environment.getExternalStorageDirectory() + File.separator + dstFile;
    int width = 640;
    int height = 480;
    int delayMs = 100;

    GifEncoder gifEncoder = new GifEncoder();

    try {
        gifEncoder.init(width, height, filePath, GifEncoder.EncodingType.ENCODING_TYPE_NORMAL_LOW_MEMORY);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    gifEncoder.setDither(true);

     ByteArrayOutputStream bos = new ByteArrayOutputStream();
     byte[] Byte;

    Bitmap resized;
    int j;
    for ( j = 0; j < 32; j++) {
        Utilities.BoomerangeFrames[j].compress(Bitmap.CompressFormat.WEBP,20,bos);
        Byte = bos.toByteArray();
        resized = BitmapFactory.decodeByteArray(Byte,0,Byte.length);
        resized = Bitmap.createScaledBitmap( Utilities.BoomerangeFrames[j], width, height, true);
        gifEncoder.encodeFrame(resized, delayMs);
        bos.reset();
    }
    gifEncoder.close();
    return null;
}

}

我想知道是否有任何解决方案可以将gif文件的大小减小到1 MB。

1 个答案:

答案 0 :(得分:0)

您可以像在article中那样降低图像的颜色深度,但是由于这种简单的方法没有使用自适应调色板,因此质量下降了。使用MediaCodec API以视频格式存储文件可能是个好主意。