gpt4 book ai didi

java - 尝试压缩图像(Gzip+Jpeg)然后解压

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:10 24 4
gpt4 key购买 nike

我正在尝试以 png 格式压缩一系列图像。看起来压缩很顺利:

FileOutputStream fos = null;
GZIPOutputStream gzip = null;
fos = new FileOutputStream(PATH_SAVE_GZIP);
gzip = new GZIPOutputStream(fos);
for (int i = 0; i < NB_OF_IMAGES; i++) {
BufferedImage im = images.get(i).getBufImg();
ImageIO.write(im, "JPEG", gzip);
}
gzip.finish();
gzip.close();
fos.close();

但是,当我尝试使用 this 解压缩它时,我得到了 Exception Nullpointer...代码。我做错了什么?

最佳答案

我已经完成了我的项目,现在我知道了答案。这可以通过多种方式解决:

一种是使用 ObjectOutput/Input Stream 并像对象一样编写 BufferedImages。

另一种是使用ByteArrayOutputStream,像bytes一样写图像。在使用它之前,您应该知道要写入的大小。所以我在每个图像之前都解决了这个书写大小。不是有效的方式......但是有效。

        fileOutputStream fos = new FileOutputStream(path);
GZIPOutputStream gzip = new GZIPOutputStream(fos);
gzip.write(shortToBytes(numImatges));
gzip.write(shortToBytes((short) 0));
for (int i = 0; i < dates.getNB_OF_IMAGES(); i++) {

if (images != null) {
im = images.get(i).getBufImg();
}
ByteArrayOutputStream byteOstream = new ByteArrayOutputStream();
ImageIO.write(im, "jpeg", byteOstream);
byteOstream.flush();
byteOstream.close();
gzip.write(shortToBytes((short) byteOstream.size()));
gzip.write(byteOstream.toByteArray());


}
//close streams

关于java - 尝试压缩图像(Gzip+Jpeg)然后解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com