Image compressing is an utility we use almost everyday... being it transferring image to to our near and dear ones, to, uploading image in database , or display it in a website. But, I didn't know that image compressing could be such an easy code until I found this one.
package com.src.compressor; import java.awt.RenderingHints; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import javax.media.jai.JAI; import javax.media.jai.OpImage; import javax.media.jai.RenderedOp; import com.sun.media.jai.codec.SeekableStream; /** * * @author Srijani Ghosh * @since Jul 1, 2014 * */ public class CompressImage { /** * @param args */ public static void main(String[] args) { try { new CompressImage().compress(); } catch (FileNotFoundException e) { e.printStackTrace(); } } private void compress() throws FileNotFoundException { //input file File infile = new File( "D:\\WORKSPACE\\ImageCompressor\\image_source\\Jellyfish.jpg"); // destination path for compressed file File outfile = new File( "D:\\WORKSPACE\\ImageCompressor\\image_compressed\\Jellyfish.jpg"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream( infile)); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(outfile)); SeekableStream s = SeekableStream.wrapInputStream(bis, true); RenderedOp image = JAI.create("stream", s); ((OpImage) image.getRendering()).setTileCache(null); RenderingHints qualityHints = new RenderingHints( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); RenderedOp resizedImage = JAI.create("SubsampleAverage", image, 0.9, 0.9, qualityHints); JAI.create("encode", resizedImage, bos, "JPEG", null); /*Print the size before and after compression*/ System.out.println("File size before compression : "+ infile.length()+" Bytes"); System.out.println("File size after compression : "+ outfile.length()+" Bytes"); } }
Please remember to use these jars - sun-jai_codec.jar, sun-jai_core.jar (i.e. add them in the classpath of your project) while running this code.
The output for me was :
File size before compression : 775702 Bytes
File size after compression : 48668 Bytes
Happy Learning!
Don't forget to share!
Don't forget to share!
No comments :
Post a Comment