From: <fg...@us...> - 2009-12-30 22:45:06
|
Revision: 1567 http://openutils.svn.sourceforge.net/openutils/?rev=1567&view=rev Author: fgiust Date: 2009-12-30 22:44:55 +0000 (Wed, 30 Dec 2009) Log Message: ----------- use less memory, write to temporary files instead of byte arrays Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java 2009-12-30 22:31:48 UTC (rev 1566) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java 2009-12-30 22:44:55 UTC (rev 1567) @@ -43,9 +43,11 @@ import java.awt.Transparency; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; +import java.io.BufferedInputStream; import java.io.BufferedOutputStream; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; @@ -469,9 +471,12 @@ public static InputStream getStream(BufferedImage image, String extension, float quality, boolean forceProgressive) throws IOException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - BufferedOutputStream out = new BufferedOutputStream(bos); + final File tempFile = File.createTempFile("image-", "." + extension); + FileOutputStream fos = new FileOutputStream(tempFile); + + BufferedOutputStream out = new BufferedOutputStream(fos); + try { @@ -568,14 +573,22 @@ throw ex; } - byte[] byteArray = bos.toByteArray(); - - if (byteArray.length == 0) + out.flush(); + IOUtils.closeQuietly(out); + return new BufferedInputStream(new FileInputStream(tempFile) { - return null; - } - return new ByteArrayInputStream(byteArray); + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException + { + tempFile.delete(); + super.close(); + } + + }); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |