这是我创建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。
答案 0 :(得分:0)
您可以像在article中那样降低图像的颜色深度,但是由于这种简单的方法没有使用自适应调色板,因此质量下降了。使用MediaCodec API以视频格式存储文件可能是个好主意。