我正在尝试在隐写术项目的 .gif 中隐藏一条消息。我已将输入 gif 转换为 BufferedImages 的 ArrayList 并应用了我的隐写算法。但是,我遇到了将 BufferedImages 的 ArrayList 转换回 .gif 的问题。在从原始 gif 图像元数据中获取帧之间的原始延迟后,我使用此GifSequenceWriter类将 BufferedImages 数组转换为新的 .gif。
File encoded_img = new File("output.gif");
ImageOutputStream output = new FileImageOutputStream(encoded_img);
GifSequenceWriter writer = new GifSequenceWriter(output, frames.get(0).getType(), delayTimeMS, true);
writer.writeToSequence(frames.get(0));
for(int k=1; k<frames.size()-1; k++) {
writer.writeToSequence(frames.get(k));
}
writer.close();
output.close();
但是,生成的 .gif 看起来真的很糟糕,我已经保存了有和没有隐写算法的各个帧,它们看起来很好。您可以在此处查看原始图像的示例、10 个保存的帧和生成的 .gif 。
有没有更好的方法在 java 中创建 .gifs?提前致谢。