java imageio gif_如何使用ImageWriter和ImageIO在Java中编码动画GIF?

小编典典

这是GIFanim的createImage()方法。也许那会给您一个开始。

public byte[] createImage() throws Exception {

ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next();

ByteArrayOutputStream os = new ByteArrayOutputStream();

ImageOutputStream ios = ImageIO.createImageOutputStream(os);

iw.setOutput(ios);

iw.prepareWriteSequence(null);

int i = 0;

for (AnimationFrame animationFrame : frameCollection) {

BufferedImage src = animationFrame.getImage();

ImageWriteParam iwp = iw.getDefaultWriteParam();

IIOMetadata metadata = iw.getDefaultImageMetadata(

new ImageTypeSpecifier(src), iwp);

configure(metadata, "" + animationFrame.getDelay(), i);

IIOImage ii = new IIOImage(src, null, metadata);

iw.writeToSequence(ii, null);

i++;

}

iw.endWriteSequence();

ios.close();

return os.toByteArray();

}

请注意,这是一个非常幼稚的实现,所生成的图像要比使用压缩调色板并执行其他优化的库所生成的图像大得多。实现这样的库将是一项重要的任务。

2020-11-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值