Compression 使用JAI压缩GIF图像

Compression 使用JAI压缩GIF图像,compression,gif,javax.imageio,jai,Compression,Gif,Javax.imageio,Jai,我正在使用JAI图像io压缩图像。当我为GIF图像做压缩时,有时GIF图像的大小会比原始图像大 BufferedImage image = ImageIO.read(fileObject); File compressedImageFile = new File("compressed-"+destination.getName()); OutputStream os =new FileOutputStream(compressedImageFile); final

我正在使用JAI图像io压缩图像。当我为GIF图像做压缩时,有时GIF图像的大小会比原始图像大

BufferedImage image = ImageIO.read(fileObject);
 File compressedImageFile = new File("compressed-"+destination.getName());
              OutputStream os =new FileOutputStream(compressedImageFile);
final ImageOutputStream ios = ImageIO.createImageOutputStream(os);
final ImageWriter gifWriter = new GIFImageWriter(gifSPI);
final ImageWriteParam iwp = gifWriter.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionType(compression);
iwp.setCompressionQuality(compressionRate);

gifWriter.setOutput(ios);
gifWriter.write(null, new IIOImage(image, null, null), iwp);
System.out.println("After Compression in GIF WRITER >>>>>>> " + ios.length()/1024 );      
ios.flush();
gifWriter.dispose()

有什么想法吗?

什么原始图像?JPEG或PNG还是什么?根据图像,情况可能很简单。你能提供示例图片吗?请查看帖子。我已经编辑了图像。原始图像为GIF格式。和输出也一样。你可以调整GIF以适合你的图像。以您的示例图像为例,您基本上有两种颜色,可能是16或32个灰度。因此,您可以相应地修改调色板大小。GIF中有柚木,但你必须知道它们什么时候有用,什么时候没有。嗨,harald,是的,将GIF转换为jpg没有意义,但如果我将其存储为GIF,它有时会失去透明度,并且大小更大。这就是存储到jpg的原因。好的,好的,如何将其转换为gif而不丢失0.75f质量的透明度?我的意思是没有意义的,您的代码只能编写gif,并且您还声明原始图像为gif格式。而且输出也一样。。。但事实并非如此,而且您的代码和示例并不相关,这只会让试图帮助您的人感到困惑。最后,您确定0.75f是一个对GIF压缩有意义的值吗?顺便说一句,GIF总是LZW编码的。可以使用非压缩LZW兼容编码,但它主要用于避免LZW专利,并且没有质量或速率设置。