Skip to Main Content

New to Java

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JPEG Compression using BufferedImage, returning byte array for db insert

807601Dec 27 2007 — edited Dec 27 2007
I am attempting to read in a file and compress it. This works if the OutputStream is created using a file, but not a bytearrayoutputstream. This function returns a null byte array. Any suggestions? Thanks!

public static byte[] convertToJPEG(String filename)
	{	
		try{		
			BufferedImage buffi = ImageIO.read(new File(filename));			
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
	        ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
		
			Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
            ImageWriter writer = writers.next();
            
            ImageWriteParam param = writer.getDefaultWriteParam();
            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            param.setCompressionQuality(.75f);

            writer.setOutput(ios);
            writer.write(null, new IIOImage(buffi, null, null), param);
			
			byte[] data = baos.toByteArray();

			writer.dispose(); 
			
			return data;		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	
		return null;

	}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 24 2008
Added on Dec 27 2007
9 comments
2,718 views