现在有个问题,就是要用JAVA处理一些JPG或者是PNG的图片,但是这些图片都很精美的那种,分辨率比较高,一般都有几百K,但是我们想在网络上传送这些图,主要是文件大小不能大,并且也不需要效果很精美,只要能看得出大概内容就可以了,也就是质量可以象PHOTOSHOP保存一个差一点质量图片。光用JAVA把原图保存为一个长宽小点的略缩图,这样效果不是很好,因为长宽变了,里面的内容小了很多,模糊了。最好是长宽不要变,图片质量变差。所以有过JAVA处理图片的朋友请帮忙建议一下:如何压缩一下图片质量,目的是让图片文件体积变小

解决方案 »

  1.   

    找段java输出JPEG图像的代码看看。
    JPEGImageEncoder 做编码时候可以设定参数的。
    JPEGEncodeParam.setQuality 即可变压缩比率
      

  2.   

    xiaomad() :
    谢谢你的回复
    你能否给些建议,如何把一个图片处理到体积最小?
    如果还能给些在网络上压缩解压图片的建议那更好了
      

  3.   

    /**
         * 保存图像到 JPEG 文件
         * @param file 保存的目标文件
         * @param image 保存的源图像
         * @param quality 保存的 JPEG 图像质量
         * @param listener 保存进度监听器
         */
        public static void writeJPEG(File file, BufferedImage image, int quality, IIOWriteProgressListener listener) throws
                FileNotFoundException, IOException {
            Iterator it = ImageIO.getImageWritersBySuffix("jpg");
            if (it.hasNext()) {
                FileImageOutputStream fileImageOutputStream = new FileImageOutputStream(file);
                ImageWriter iw = (ImageWriter) it.next();
                ImageWriteParam iwp = iw.getDefaultWriteParam();
                iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
                iwp.setCompressionQuality((float) quality / 100f);
                iw.setOutput(fileImageOutputStream);
                iw.addIIOWriteProgressListener(listener);
                iw.write(null, new IIOImage(image, null, null), iwp);
                iw.dispose();
                fileImageOutputStream.flush();
                fileImageOutputStream.close();
            }
        }
      

  4.   

    先用ZipOutputStream压缩下那些图片文件不知可行否
      

  5.   

    关键是客户端是IE,用ZIP压缩的话,需要客户端是APPLET来解压。
    用GZIP不知道能否压缩图片?
    GZIP是不是只能压缩网页?